我正在尝试在 Typescriptlang.org 的操场上测试一个相当做作的示例。我的 INewable 接口指定了一个字符串构造函数参数。在我的工厂方法的主体中,我不遵守此约束(通过使用数字或使用 void 参数列表调用)。我没有收到错误或警告。
我做错了什么还是这是一个错误?
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());
编辑:更简单的形式:
function createInstance<T>(ctor:new(s:string)=>T):T {
return new ctor(42); //why doesn't this fail either
}
表现出相同的错误。