【发布时间】:2020-09-28 16:41:43
【问题描述】:
所以,我有:
interface Foo {
type: FooType;
}
这里用FooType哪个比较好:
类型别名?
type FooType = 'BAR' | 'BAZ';
或基于字符串的枚举?
enum FooType {
BAR = 'BAR',
BAZ = 'BAZ'
}
两者的优缺点是什么?
【问题讨论】:
标签: typescript
所以,我有:
interface Foo {
type: FooType;
}
这里用FooType哪个比较好:
类型别名?
type FooType = 'BAR' | 'BAZ';
或基于字符串的枚举?
enum FooType {
BAR = 'BAR',
BAZ = 'BAZ'
}
两者的优缺点是什么?
【问题讨论】:
标签: typescript
您的第一个示例(您称之为“类型别名”)实际上称为string literal type。
我认为这取决于个人喜好。
枚举
const enum 来避免这种情况)字符串字面量
string 类型的值时,您通常必须先断言any,然后再断言您的值let x: string
let y: FooType
y = x as any as FooType
(编辑:嗯,看起来他们已经修复了)
我以前更喜欢枚举,但最近我更倾向于字符串文字类型。同样,我认为这完全取决于个人喜好。
【讨论】: