Я получал некоторые неожиданные действия в одном из моих проектов, поэтому я выделил его на самый маленький пример, который я мог бы по-прежнему испытывать. Я использую последнюю машинопись построить 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