Próbuję przetestować raczej wymyślony przykład na placu zabaw na Typescriptlang.org. Mój interfejs INEwable określa pojedynczy argument konstruktora ciągu. W treści mojej metody fabrycznej nie przestrzegam tego ograniczenia (używając numeru lub wywołując listę nieważnych argumentów). Nie otrzymuję błędnego błędu ani ostrzeżenia.Opis maszynowy: new() Umowa z interfejsem nie jest wymuszana
Czy zrobiłem coś złego, czy to błąd?
interface INewable<T> {
new(param: string): T;
}
interface IToStringable {
toString(): string;
}
module Factory {
export function createInstance<T extends IToStringable>(ctor: INewable<T>): T {
return new ctor(1024); //why doesn't this fail?
}
}
var d = Factory.createInstance(Function);
alert(d.toString());
EDIT: prostsza forma:
function createInstance<T>(ctor:new(s:string)=>T):T {
return new ctor(42); //why doesn't this fail either
}
wykazuje taki sam błąd.