web-dev-qa-db-ja.com

TypeScriptの「タイプ」予約語とは何ですか?

TypeScriptでインターフェイスを作成しようとすると、 "type"がキーワードまたは予約語のいずれかであることに気付きました。たとえば、次のインターフェイスを作成すると、TypeScript 1.4を使用したVisual Studio 2013では「タイプ」が青で表示されます。

interface IExampleInterface {
    type: string;
}

次に、次のようにクラスにインターフェースを実装しようとするとします。

class ExampleClass implements IExampleInterface {
    public type: string;

    constructor() {
        this.type = "Example";
    }
}

クラスの最初の行で、インターフェイスに必要なプロパティを実装するために「タイプ」という単語を入力(申し訳ありません)すると、IntelliSenseは、「type」や「new」などの他のキーワードと同じアイコンを持つ「type」で表示されます「。

私は周りを見て、これを見つけることができました GitHub issue TypeScriptで「タイプ」を「厳格なモード予約語」としてリストしますが、その目的が実際に何であるかについてのさらなる情報は見つかりませんです。

私は脳のおならを持っていると思うし、これは私がすでに知っているべき明らかなことですが、TypeScriptの「タイプ」予約語は何のためですか?

76
Adam Goodwin

「タイプエイリアス」に使用されます。例えば:

type StringOrNumber = string | number;
type DictionaryOfStringAndPerson = Dictionary<string, Person>;

参照: TypeScript Specification v1.5 (セクション3.9、「タイプエイリアス」、46ページおよび47ページ)

Update1.8仕様のセクション3.10で 。更新された仕様とリンクを@RandallFlaggに感謝します

UpdateTypeScript Handbook 、「Type Aliases」を検索すると、対応するセクションに移動できます。

94
Jcl

TypeScriptのタイプキーワード:

TypeScriptでは、typeキーワードは型のエイリアスを定義します。 typeキーワードを使用して、ユーザー定義型を定義することもできます。これは例を使用して説明するのが最適です。

type Age = number | string;    // pipe means number OR string
type color = "blue" | "red" | "yellow" | "purple";
type random = 1 | 2 | 'random' | boolean;

// random and color refer to user defined types, so type madness can contain anything which
// within these types + the number value 3 and string value 'foo'
type madness = random | 3 | 'foo' | color;  

type error = Error | null;
type callBack = (err: error, res: color) => random;

スカラー型(stringnumberなど)の型だけでなく、1'mystring'などのリテラル値の型も構成できます。他のユーザー定義タイプのタイプを作成することもできます。たとえば、タイプmadnessおよびrandomを含むcolorと入力します。

次に、文字列リテラルを作成しようとすると(およびIDEにインテリジェンスがある場合)、提案が表示されます。

enter image description here

これは、タイプマッドネスがタイプカラーを持つことから派生するすべての色、タイプランダムから派生する「ランダム」、そして最後にタイプマッドネス自体にある文字列'foo'を示します。

15