我遇到了一个接口定义,如下所示:
interface config {
align?: 'left' | 'center' | 'right';
}
属性定义的含义是什么?我在哪里可以在网上找到关于它的解释?
这是否意味着我只能将left
/ center
/ right
分配给属性assign
?
答案 0 :(得分:1)
确切地说,这就是它的工作原理。转到Advanced Types并向下滚动到"字符串文字类型"
它基本上是一个简化的枚举类型,只允许某些字符串值,并且对于通过"魔术字符串"接受行为的库的注释非常有用。
引用文章:
字符串文字类型允许您指定字符串的确切值 一定有。在实践中,字符串文字类型与union很好地结合在一起 类型,类型保护和类型别名。您可以使用这些功能 一起用字符串获得类似枚举的行为。
type Easing = "ease-in" | "ease-out" | "ease-in-out";
class UIElement {
animate(dx: number, dy: number, easing: Easing) {
if (easing === "ease-in") {
// ...
}
else if (easing === "ease-out") {
}
else if (easing === "ease-in-out") {
}
else {
// error! should not pass null or undefined.
}
}
}
let button = new UIElement();
button.animate(0, 0, "ease-in");
button.animate(0, 0, "uneasy"); // error: "uneasy" is not allowed here
答案 1 :(得分:0)
那是对的。这意味着您将align
属性限制为这三个值中的一个,从而有效地使其像枚举一样工作。
interface config {
align?: 'left' | 'center' | 'right';
}
// this is valid
const a: config = {
align:'left'
}
// this is not
const b: config = {
align:'down'
}