Typescriptlang.orgの遊び場で、やや工夫した例を試そうとしています。私のINewableインターフェイスは、単一の文字列コンストラクタ引数を指定します。私のファクトリメソッドの本体では、この制約を尊重しません(数値を使うかvoid引数リストを使って呼び出します)。私は間違いや警告を受けていません。Typescript:new()インタフェース契約が強制されていません
私は何か間違ったことをしましたか、これはバグですか?
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:単純な形式:
function createInstance<T>(ctor:new(s:string)=>T):T {
return new ctor(42); //why doesn't this fail either
}
が同じバグを示します。