2015-04-03 3 views
1

у меня есть объект панели инструментов в моем ViewModel и это получить оказанные:Машинопись буквальный объект, содержащий массив объектов

 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 '{}' 

Как правильно объявить/включить панель инструментов?

Заранее спасибо

ответ

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()); 
Смежные вопросы