为什么专门的过载签名只能用于方法而不能用于属性?

时间:2014-10-21 14:14:05

标签: typescript

您可以为方法设置专门的重载签名,但不能为属性设置,为什么会这样?

//ok
interface Test {
    method(foo : string);
    method(foo : "bar");
} 

//error
interface Test2 {
    propertyFoo : string;
    propertyFoo : "bar";
}

http://www.typescriptlang.org/Playground

1 个答案:

答案 0 :(得分:2)

对版本类型的支持在1.4版本的Typescript roadmap上。有关讨论,请参阅ticket,但它允许以如下方式声明属性:

interface Test2 {
    propertyFoo : string | number;
}

过载"过载"是否有意义。像你的例子中的一个属性," bar"已经是一个字符串。对于函数,返回类型可能根据具体参数而有所不同,因此重载对于更好的类型安全性有用。代码完成。对于房产类型没有这样的好处。