我在我的一個項目中遇到了一些意想不到的行爲,所以我將它隔離到了我能夠解決問題的最小示例。我使用的是最新的打字稿建立0.9.1.1用常量重載
module module2 {
export interface IAnimal {
colour:string;
}
}
module module1 {
export interface IInjector {
get(className:string):void;
}
}
module module1 {
export interface IInjector {
get(className: "module2.IAnimal"):module2.IAnimal;
}
class Injector implements module1.IInjector {
public get(className:string):any {
return {colour:"Blue"};
}
}
export var injector:IInjector = new Injector();
}
module module2 {
module1.injector.get("module2.IAnimal").surname;
}
產生預期的錯誤 錯誤TS2094:屬性「姓」不會對類型的值「IAnimal」存在。
如果我換了前兩名的模塊DEFS我不再得到預期的錯誤
module module1 {
export interface IInjector {
get(className:string):void;
}
}
module module2 {
export interface IAnimal {
colour:string;
}
}
module module1 {
export interface IInjector {
get(className: "module2.IAnimal"):module2.IAnimal;
}
class Injector implements module1.IInjector {
public get(className:string):any {
return {colour:"Blue"};
}
}
export var injector:IInjector = new Injector();
}
module module2 {
module1.injector.get("module2.IAnimal").surname;
}
其實我想的錯誤顯示,以表示我已經在IDE中的錯誤。我的問題是爲什麼它會顯示第一個例子,而不是第二個?
這是真棒布倫丹。看起來像一個編譯器錯誤,雖然 – basarat