1

ビューモデルにツールバー オブジェクトがあり、レンダリングされます。

        var toolbar = {
        items: [
            {
                location: 'before',
                template: 'nav-button'
            },
            {
                location: "before",
                html: ko.observable(showCurrentDateTime()),
                tabIndex: 1
            },
            {
                location: "center",
                text: "title",
            },
            {
                location: "after",
                html: "<img src='../images/logo.png'>"
            }
        ]
    };

ただし、次のようにオブジェクト項目のいずれかの内容を設定しようとすると、VS2013 で奇妙なエラーが発生します。

toolbar.items[1].html(showCurrentDateTime());

error: The property 'html' does not exist on value of type '{}'

ツールバーを正しく宣言/初期化するにはどうすればよいですか?

前もって感謝します

4

1 に答える 1

2

項目は空のオブジェクトとして推論されます{}。インターフェイスでタイプを定義できます。

interface Item {
    location: string;
    template?: string;
    html?: Function;
    text?: string;
}
interface Toolbar {
    items: Item[];
}
var toolbar: Toolbar = {
    // ...
}
toolbar.items[1].html(showCurrentDateTime());

… または、型チェックをキャンセルすることもできます。

動的計画法による:

toolbar.items[1]['html'](showCurrentDateTime());

または、タイプへの「キャスト」によってany

(<any>toolbar.items[1]).html(showCurrentDateTime());
于 2015-04-03T12:02:35.817 に答える