您可以为方法提供专门的重载签名,但不能为属性提供,为什么?
//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"已经是一个字符串了。对于函数,返回类型可能会因特定参数而异,因此重载对于更好的类型安全性很有用;代码完成。房地产类型没有这样的好处。