4
Typescript中最好的方法是隻允許一些屬性值?Typescript - 屬性的允許值
class Foo {
public type:string;
// Possible values for type: ['foo1', 'foo2', 'foo3']
constructor() {}
}
我想使這些類型成爲唯一允許的類型,防止我在擴展Foo類時放錯類型。
Typescript中最好的方法是隻允許一些屬性值?Typescript - 屬性的允許值
class Foo {
public type:string;
// Possible values for type: ['foo1', 'foo2', 'foo3']
constructor() {}
}
我想使這些類型成爲唯一允許的類型,防止我在擴展Foo類時放錯類型。
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。