5

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
}

同じバグを示します。

4

1 に答える 1