Ich versuche ein eher künstliches Beispiel auf dem Spielplatz auf Typescriptlang.org zu testen. Meine INewable-Schnittstelle gibt ein einzelnes String-Konstruktorargument an. Im Körper meiner Factory-Methode respektiere ich diese Einschränkung nicht (entweder durch Verwendung einer Zahl oder durch Aufruf einer Leerstellen-Argumentliste). Ich erhalte keinen Fehler, schelmisch oder Warnung.Typescript: new() Interface contract not erzwungen
Habe ich etwas falsch gemacht oder ist das ein Fehler?
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: Die einfachere Form:
function createInstance<T>(ctor:new(s:string)=>T):T {
return new ctor(42); //why doesn't this fail either
}
zeigt die gleichen Fehler.