您可以指定接口中的属性必须具有某个值吗?

时间:2019-02-07 11:56:37

标签: typescript

我正在创建一个接口,在该接口中,需要在使用属性时将其显式设置为值。

我已经看到我可以为一个属性指定多个可能的值

例如

propertyA: 'x' | 'y' | 'z';

这项工作可以用于单一价值吗?

所以,如果我做了类似的事情:

propertyA: 'x'

当接口用于在其他地方定义对象时,如果尝试使用其他值,编译器会抱怨吗?

在上面的示例中是否有办法,可以说此属性只能保存'x'值?

我碰到了type,想知道这是否对我来说是比界面更好的方法。

如果我在这里误解了一些东西,请纠正我。

2 个答案:

答案 0 :(得分:2)

propertyA: 'x' | 'y' | 'z';使用两个打字稿高级打字功能。

Union types使我们能够创建新类型,该新类型可以是给定类型集之一。所以number | string表示某物是numberstring

String literal types是仅接受单个值的类型。因此,'z'可以用作类型,其含义是某事将永远只是该值。鉴于此,您可以编写:

interface Foo {
    x: 'x'
}
let foo: Foo = {
    x: 'x' //ok
}

let bar: Foo = {
    x: 'y' //err
}

因此,可以的,只有一个成员的接口才是一个值。通常与discriminated unions结合使用。

答案 1 :(得分:0)

您不能为接口的参数分配值。您只能在类或模块中进行此操作。

相关问题