Typescriptlang.org の遊び場でかなり不自然な例をテストしようとしています。私の INewable インターフェイスは、1 つの文字列コンストラクター引数を指定します。私のファクトリメソッドの本体では、この制約を尊重していません(数値を使用するか、無効な引数リストを使用して呼び出します)。エラーや警告が表示されません。
私は何か間違ったことをしましたか、それともこれはバグですか?
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
}
同じバグを示します。