3

任意のオブジェクトの配列を取ることができるメソッドでオブジェクトを宣言する方法は?

コード内: (1) コードにコンパイル エラー 'Incompatible types in array' があります。(2) エラーなし。(1)を使いたい。

declare var enyo;


// (1). compile error: 'Incompatible types in array'

enyo.kind({
    name: "HelloWidget",
    components: [
        { name: "hello", content: "Hello From Enyo" },
        { kind: "Button", content: "Click Me!", ontap: "helloTap" }
    ]
});


// (2). no erros but have to write <any>

enyo.kind({
    name: "HelloWidget",
    components: [
        <any>{ name: "hello", content: "Hello From Enyo" },
        <any>{ kind: "Button", content: "Click Me!", ontap: "helloTap" }
    ]
});
4

2 に答える 2

1

最適な修正方法はenyo、コンパイラがコンテキスト型を配列式に適用できるように、いくつかの型情報を提供することです。

interface EnyoComponent {
    name?: string;
    content?: string;
    kind?: string;
    ontap?: string;
}

declare var enyo: {
    kind(settings: {
        name: string;
        components: EnyoComponent[];
    });
};

enyo.kind({
    name: "HelloWidget",
    components: [
        { name: "hello", content: "Hello From Enyo" },
        { kind: "Button", content: "Click Me!", ontap: "helloTap" }
    ]
});
于 2013-04-03T16:14:27.767 に答える