0

型付き配列を関数/コンストラクターに渡すことができないのはなぜany[]ですか?

typedArray = new MyType[ ... ];
items = new ko.observableArray(typedArray);

エラーが表示されます:

指定されたパラメーターは、呼び出しターゲットの署名と一致しません

ko.observableArrayと定義されている:

interface KnockoutStatic 
{
    observableArray: KnockoutObservableArrayStatic;
}

interface KnockoutObservableArrayStatic
{
    new(value: any[]): KnockoutObservableArray;
}

declare var ko: KnockoutStatic;

MyType[]myを として渡すにはどうすればよいany[]ですか? これは共分散の問題ですか?

4

1 に答える 1

3
typedArray = new MyType[ ... ];

これは、JavaScript または TypeScript で新しい配列を作成する方法ではありません (0.9.0 では、これは空の配列の場合に正しく構文エラーになります)。次のように書けるはずです:

typedArray = [ ... ];

コンパイラに型を として正しく推論させMyType[]ます。必要に応じて、型注釈を追加できます。

typedArray = <MyType[]>[ ... ];
于 2013-04-02T16:15:17.700 に答える