我正在创建一个接口,在该接口中,需要在使用属性时将其显式设置为值。
我已经看到我可以为一个属性指定多个可能的值
例如
propertyA: 'x' | 'y' | 'z';
这项工作可以用于单一价值吗?
所以,如果我做了类似的事情:
propertyA: 'x'
当接口用于在其他地方定义对象时,如果尝试使用其他值,编译器会抱怨吗?
在上面的示例中是否有办法,可以说此属性只能保存'x'值?
我碰到了type
,想知道这是否对我来说是比界面更好的方法。
如果我在这里误解了一些东西,请纠正我。
答案 0 :(得分:2)
propertyA: 'x' | 'y' | 'z';
使用两个打字稿高级打字功能。
Union types使我们能够创建新类型,该新类型可以是给定类型集之一。所以number | string
表示某物是number
或string
String literal types是仅接受单个值的类型。因此,'z'
可以用作类型,其含义是某事将永远只是该值。鉴于此,您可以编写:
interface Foo {
x: 'x'
}
let foo: Foo = {
x: 'x' //ok
}
let bar: Foo = {
x: 'y' //err
}
因此,可以的,只有一个成员的接口才是一个值。通常与discriminated unions结合使用。
答案 1 :(得分:0)
您不能为接口的参数分配值。您只能在类或模块中进行此操作。