Typescript接口中一种属性定义的含义

时间:2017-07-14 07:21:51

标签: typescript

我遇到了一个接口定义,如下所示:

interface config {
    align?: 'left' | 'center' | 'right';
}

属性定义的含义是什么?我在哪里可以在网上找到关于它的解释?
这是否意味着我只能将left / center / right分配给属性assign

2 个答案:

答案 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'
}