blog

なぜWebアプリケーションの開発にTypeScriptを使うのか?

TypeScriptはMicrosoftによって開発・保守されているオブジェクト指向プログラミング言語です。そのスーパーセットであり、すべての要素を含んでいます。 2010年にAnders Hejls...

Oct 24, 2020 · 8 min. read
シェア

I. TypeScriptとは

TypeScriptはここ数年で最も人気のあるアプリケーションです。そのため、TypeScriptは多くの支持者を持つ新しい言語であるかのような錯覚に陥ります。
TypeScriptはMicrosoftによって開発・保守されているオブジェクト指向プログラミング言語です。JavaScriptのスーパーセットであり、JavaScriptのすべての要素を含んでいます。
TypeScriptJavaScriptのスーパーセットです。

次に、TypeScriptの歴史について簡単に説明します。

2010年、Anders HejlsbergはMicrosoftでTypeScriptの開発を開始し、2012年にTypeScriptの最初のバージョンを一般公開しました。TypeScriptのリリースは世界中の多くの人々から賞賛されましたが、主要なイデアのサポートがなかったため、JavaScriptコミュニティでは主に採用されませんでした。
Typescriptの最新バージョンは2018年7月にリリースされ、ダウンロードできます!

III. TypeScriptを使う理由

  • TypeScriptはJavaScriptのコードを単純化し、読みやすく、デバッグしやすくします。
  • TypeScriptオープンソースです。
  • TypeScript は、JavaScript の理想と実践のための効率的な開発ツールを提供します。
  • TypeScriptはコードを読みやすく、理解しやすくします。
  • TypeScriptを使うことで、通常のJavaScriptを大幅に改善することができます。
  • TypeScriptは、ES6のすべての利点を提供するだけでなく、生産性も向上させます。
  • TypeScriptは、コードの型チェックを行うことで、JavaScriptを記述する際にしばしば遭遇する手痛いエラーを回避するのに役立ちます。
  • ジェネリックを含む強力な型システム。
  • TypeScriptはJavaScriptにいくつかの機能を追加したものに過ぎません。
  • TypeScriptのコードは、最新のブラウザをサポートするためにES5およびES6標準にコンパイルすることができます。
  • 互換性のために ECMAScript に合わせました。
  • JavaScriptで始まりJavaScriptで終わります。
  • 静的な型がサポートされています。
  • TypeScriptは開発者の時間を節約します。
  • TypeScriptES3、ES5、ES6のスーパーセットです。

TypeScriptその他の機能

  • オプションの引数を持つ関数。
  • REST パラメータを使用する関数。
  • 汎用的なサポート
  • モジュールのサポート

IV.雄牛は語る

  • 「TypeScriptには、私が気に入っている点がたくさんあります。"-ブラッド・グリーン、エンジニアリング・ディレクター、Angular"
  • Ionicの主な目標の1つは、ツールがTypeScriptをサポートし、自動補完、型チェック、ソースドキュメントを提供することです。"-ティム・ランシナ、ツール開発者、Ionic"
  • TypeScriptは、モダンなWebアプリケーションやJavaScriptベースのアプリケーションを書くときの賢い選択です。TypeScriptの注意深く考慮された言語機能と機能、そして常に改善され続けるツールは、非常に生産的な開発体験をもたらします。-アーロン・コーネリアス、エピックフェロー"
  • TypeScriptは、C#と同じ素晴らしい開発体験を提供することで、同じチームのスピードを維持するのに役立っています......通常のJavaScriptよりも大きな改善です"-バリオ・ストイチェフ、PMリード-NativeScript"

V. 意外と知らないTypeScriptのトップ機能

オブジェクト指向プログラミング

TypeScript には、堅牢でクリーンなコードを維持するのに役立つ、非常に優れたオブジェクト指向プログラミング機能のセットが含まれています。これらの OOP 機能により、TypeScript のコードは非常にすっきりと整理されます。
class CustomerModel {
 customerId: number;
 companyName: string;
 contactName: string;
 country: string;
}
class CustomerOperation{
 addCustomer(customerData: CustomerModel) : number {
 // ユーザーを追加する
 let customerId = 5;// 保存後に返されるID
 return customerId;
 }
}

インターフェイス、ジェネリックス、継承、メソッドアクセス修飾子

TypeScriptはインターフェイス、ジェネリクス、継承、メソッドアクセス修飾子をサポートしています。インターフェイスは契約を指定するための良い方法です。ジェネリックスはコンパイル時のチェックに役立ち、継承は新しいオブジェクトが既存のオブジェクトのプロパティを持つことを可能にし、アクセス修飾子はクラスのメンバへのアクセス性を制御します。

インターフェイス

interface ITax {
 taxpayerId: string;
 calculateTax(): number;
}
class IncomeTax implements ITax {
 taxpayerId: string;
 calculateTax(): number {
 return 10000;
 }
}
class ServiceTax implements ITax {
 taxpayerId: string;
 calculateTax(): number {
 return 2000;
 }
}

アクセス修飾子

class Customers{
 public companyname:string;
 private country:string;
}
パブリック変数とプライベート変数の表示

継承

class Employee{
 Firstname:string;
}
class Company extends Employee {
 Department:string;
 Role:string
 private AddEmployee(){
 this.Department="myDept";
 this.Role="Manager";
 this.FirstName="Test";
 }
}

汎用的

function identity<T> (arg: T): T {
 return arg; 
}
// 汎用的な実装を示す例
let output = identity <string>("myString");
let outputl = identity <number> (23);

/静的な型

TypeScript では、異なるデータ型の値を混在させることはできません。この制限に違反するとエラーが投げられます。したがって、変数の宣言時に型を定義しておく必要があり、JavaScriptで定義されている可能性の高い型以外の値を代入することはできません。
let testnumber: number = 6;
testnumber = "myNumber"; // そのため
testnumber = 5; // そのため、以下のことが可能になる。

コンパイル時/静的型チェック

プログラミング言語の正しい構文とセマンティクスが守られていない場合、コンパイラはコンパイル時エラーを投げます。すべての構文エラーを取り除いた後、あるいはコンパイル時のエラーをデバッグした後、コンパイラはプログラムを1行も実行させません。
let isDone: boolean = false;
isDone = "345"; // そのため
isDone = true; // そのため、以下のことが可能になる。

JavaScript よりも少ないコード

TypeScript は JavaScript のラッパーなので、ヘルパークラスを使ってコードを減らすことができます。

可読性

インターフェイスやクラスなどは、コードに可読性を与えます。コードはクラスやインターフェイスで書かれているので、より理にかなっており、読みやすく理解しやすくなります。
class Greeter {
 private greeting: string;
 constructor (private message: string) {
 this.greeting = message;
 }
 greet() {
 return "Hello, " + this.greeting;
 }
}
JavaScriptコード
var Greeter = (function () {
 function Greeter(message) {
 this.greeting = message;
 }
 Greeter.prototype.greet = function () {
 return "Hello, " + this.greeting;
 };
 return Greeter;
})();

互換性

Typescript は、underscore.js や Lodash などの JavaScript ライブラリと互換性があります。これらのライブラリには、開発をより高速にする、多くの機能が組み込まれており、使いやすくなっています。

は、コードを提供するためにJavaScriptと同等のコードに変換することができます "コンパイラ"。

TypeScriptのコードは、プレーンなJavaScriptのコードと、TypeScript固有の特定のキーワードや構成要素で構成されています。しかし、TypeScriptのコードがコンパイルされる際には、プレーンなJavaScriptに変換されるため、生成されたJavaScriptはJavaScriptをサポートするブラウザであれば、どのブラウザでも利用することができます。

サポートモジュール

TypeScriptのコードベースが大きくなるにつれて、保守性を高めるためにクラスやインターフェイスを整理することが重要になってきます。モジュールはコードのコンテナであり、コードをきちんと整理するのに役立ちます。概念的には、.NETの名前空間と似ているかもしれません。
module Company {
 class Employee {
 }
 
 class EmployeeHelper {
 targetEmployee: Employee;
 }
 
 export class Customer {
 }
}
var obj = new Company.Customer();

ES6 機能のサポート

Typescript は ES6 のスーパーセットなので、ES6 のすべての機能を持っています。また、一般的にラムダ関数として知られているアロー関数のサポートなどの機能もあります。es6 では、ファット・アロー構文と呼ばれる、無名関数を定義するための少し異なる構文が導入されています。
setTimeout(() => {
 console.log("setTimeout called!")
}, 1000);

一般的なフレームワークでの使用

TypeScriptはここ数年でますます人気が高まっています。おそらくTypeScriptの人気を決定的にするのは、Angular2が正式にTSに変換されたときでしょう。

エラーを減らす

ヌル処理や未定義などのエラーを減らすことができます。適切な型チェックを行うことで、開発者が型固有のコードを書くことを制限する、強い型付け機能。

関数のオーバーロード

TypeScriptではオーバーロード関数を定義することができます。これにより、引数に応じて異なる実装の関数を呼び出すことができます。ただし、TypeScriptの関数のオーバーロードは少し奇妙で、実装時に型チェックが必要であることに留意してください。この制限は、TypeScriptのコードが最終的に純粋なJavaScriptにコンパイルされるという事実によるもので、本当の意味での関数のオーバーロードという概念をサポートしていません。
class functionOverloading{
 addCustomer(custId: number);
 addCustomer(company: string);
 addCustomer(value: any) {
 if (value && typeof value == "number") {
 alert("First overload - " + value);
 }
 if (value && typeof value == "string") {
 alert("Second overload - " + value);
 }
 }
}

コンストラクタ

TypeScriptで定義されたクラスはコンストラクタを持つことができます。コンストラクタは通常、オブジェクトのプロパティにデフォルト値を設定することで、オブジェクトの初期化を行います。コンストラクタは関数のようにオーバーロードすることもできます。
export class SampleClass{
 private title: string; 
 constructor(public constructorexample: string){
 this.title = constructorexample; 
 }
}

デバッグ

TypeScriptで書かれたコードはデバッグが容易です。

TypeScript は単なる JavaScript です。

TypeScript は JavaScript に始まり JavaScript に終わります。Typescript は JavaScript のプログラムの基本的な構成要素を取り込みます。実行のために、すべてのTypeScriptのコードはJavaScriptと同等のものに変換されます。
class Greeter {
 greeting: string;
 constructor (message: string) {
 this.greeting = message;
 }
 greet() {
 return "Hello, " + this.greeting;
 }
}
JavaScriptコード
var Greeter = (function () {
 function Greeter(message) {
 this.greeting = message;
 }
 Greeter.prototype.greet = function () {
 return "Hello, " + this.greeting;
 };
 return Greeter;
})();
TypeScript はブラウザ、デバイス、オペレーティングシステムを問わず移植可能です。JavaScriptが動作する環境であれば、どのような環境でも実行できます。スクリプティングとは異なり、TypeScript は実行に専用の VM や特定の実行環境を必要としません。



Read next

ウェブサーバ、アプリケーションサーバ、ウェブコンテナ、リバースプロキシサーバの違いと関連性を理解するための記事。

肌の色が異なる人の外見は大きく異なり、双子を識別することは困難です。興味深いことに、ウェブ・サーバ、ウェブ・コンテナ、ウェブ・アプリケーション・サーバ、リバースプロキシは四つ子のようなもので、ウェブ上ではよく一緒に見られます。この記事では、これら4つの似たような概念をどのように見分けることができるのか、読者の皆さんにご紹介します。 1989年、インターネットの父であるバーナーズ=リーは、雇用主であるCERNに新しいプロジェクトを提案しました。

Oct 24, 2020 · 10 min read