2016-05-15 4 views
4

Typescriptでプロパティの値をいくつでも許可するのが最も良い方法は何ですか?Typescript - プロパティに使用できる値

class Foo { 
    public type:string; 
    // Possible values for type: ['foo1', 'foo2', 'foo3'] 

    constructor() {} 
} 

私はFooのクラスを拡張する際に間違った型を置くために私を防止し、これらのタイプのみ許さタイプのようにしたいと思います。

答えて

13
class Foo { 
    public type: "foo1" | "foo2" | "foo3"; 

    constructor() {} 
} 

または

type MyType = "foo1" | "foo2" | "foo3"; 

class Foo { 
    public type: MyType; 

    constructor() {} 
} 

しかし、これが唯一のコンパイルではなく、実行時に適用されます。
あなたがFoo.typeの値は一つだけ、これらの値のあることを確認するには、あなたは、実行時にそれをチェックする必要があります。

type MyType = "foo1" | "foo2" | "foo3"; 

class Foo { 
    public type: MyType; 

    constructor() {} 

    setType(type: MyType): void { 
     if (["foo1", "foo2", "foo3"].indexOf(type) < 0) { 
      throw new Error(`${ type } is not allowed`); 
     } 

     this.type = type; 
    } 
} 

これはString Literal Typesと呼ばれています。

関連する問題