为什么专门的重载签名只适用于方法而不适用于属性



您可以为方法提供专门的重载签名,但不能为属性提供,为什么?

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

http://www.typescriptlang.org/Playground

1.4版本的Typescript路线图中提供了对联合类型的支持。请参阅讨论的票证,但它允许像这样声明属性:

interface Test2 {
    propertyFoo : string | number;
}

像您的例子中那样"重载"一个属性是没有意义的,因为"bar"已经是一个字符串了。对于函数,返回类型可能会因特定参数而异,因此重载对于更好的类型安全性很有用;代码完成。房地产类型没有这样的好处。

相关内容

最新更新