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


104

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

interface IExampleInterface {
    type: string;
}

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

class ExampleClass implements IExampleInterface {
    public type: string;

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

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

調べてみましたが、TypeScriptで「type」が「strict mode reserved word」としてリストされているこのGitHubの問題を見つけることができましたが、その目的が実際に何であるかについての詳細情報は見つかりませんでした。

私は頭がおならしているのではないかと思いますが、これは私がすでに知っているはずの明らかなことですが、TypeScriptの「タイプ」予約語は何ですか?


Type Aliasあなたのタイプのセマンティック名を与えるために:basarat.gitbooks.io/typescript/content/docs/types/...
basarat

回答:


128

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

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

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

更新1.8仕様のセクション3.10になりました。更新された仕様とリンクについて@RandallFlaggに感謝

更新TypeScriptハンドブック、「Type Aliases」で検索すると、対応するセクションに移動できます。


24
ええ、それは明らかなことでした。特に問題の言語が「TypeScript」と呼ばれる場合、プログラミング言語のコンテキストで「type」という単語を検索するときに、探しているものを見つけるのは非常に難しいことがわかりました。ちなみに、TypeScriptには一般的な辞書はまだ存在しません。
アダムグッドウィン

1
ここでは一つだ:あなたは(TS 0.9以上のために)それを必要とする場合
のJcl

ありがとう、辞書が欲しかったときにそのプロジェクトを一度見たと思いますが、結局私はそれなしでやることに決めました。
アダムグッドウィン

コンセプトはcaのtypedefから来ました。このstudytonight.com/c/typedef.phpを
Pranoy Sarkar

31

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'。他のユーザー定義タイプのタイプを作成することもできます。たとえば、type madnessには型randomとそのcolor中があります。

次に、文字列リテラルを作成しようとすると(そしてIDEにIntelliSenseがある場合)、提案が表示されます。

ここに画像の説明を入力してください

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


ユーザー定義型と列挙型の違いは何ですか
ORcoder

1
@ORcoder良い質問です!私も知りたいです。私たちが理解するための良い説明!
Merv

type color = "blue" | "red" | "yellow" | "purple";クラスの内部または外部でステートメントを宣言した場所はどこですか?
Lalit Kushwah
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.