2014-01-21 3 views
0

Я использую систему Kendo UI Grid для сетки данных, и я переношу свой код на TypScript. Я люблю его до сих пор, но ударил несколько коряг; Одна из них заключается в том, что объявление для сетки кажется немного неполным даже при официальных определениях веб-сайта Telerik.Kendo UI, Grid «Панель инструментов» с машинописным текстом

Например, этот код работает в javascript. Однако, если я запустил этот точный код в TypScript, мне сказали, что свойство toolbar недействительно, потому что ожидается тип GridToolbarItem. Я проследил GridToolbarItem, и, хотя я действительно нашел для него интерфейс, я не могу его объявить или создать, поэтому мне не разрешено создавать панель инструментов для моей сетки!

 elements.grid = $('#grid').kendoGrid({ 
      dataSource: { 
       transport: { 
        read: { 
         url: "/administrator/data/items", 
         dataType: "json", 
         type: 'GET', 
         cache: false 
        } 
       }, 
       schema: { 
        total: "total", 
        data: "data" 
       }, 
       page: 0, 
       pageSize: 15, 
       take: 15, 
       serverPaging: true, 
       serverFiltering: true, 
       type: "aspnetmvc-ajax" 
      }, 
      toolbar: kendo.template($("#search-byName").html()), 
      pageable: { 
       refresh: true, 
       pageSizes: true 
      }, 
      selectable: "row", 
      columns: [ 
       { 
        field: "Id", 
        width: 25, 
        title: "Identity" 
       }, 
       { 
        field: "Name", 
        width: 40, 
        title: "Name", 
        template: "<div class='#: Quality.CSS #'>#: Name #</div><div>#: (Origin.Label != null) ? Origin.Label : '' #</div>" 
       } 
      ], 
      change: function (e) { 
       // do some stuff when an item is selected 
      }, 
     }).data("kendoGrid"); 

ответ

1

система типа машинопись является отличается от Java или C# в том, что это форма типа, что имеет значение, а не имена в иерархии классов. Мне нравится думать об этом как о контракте. В контракте говорится, что у вас должны быть определенные вещи, и неважно, почему у вас их есть, или у вас есть больше.

Вот хромой пример, который я приготовил:

interface BagOfStuff { 
    anum: number; 
    astring: string; 
    anany: any; 
} 

function processBag(bag: BagOfStuff): void { } 

var aBag = { 
    anum: 5, 
    astring: "foo", 
    anany: {}, 
    bonusThing: "bar" 
}; 
processBag(aBag); // works 

aBag никогда не сказал, что это тип BagOfStuff, но она удовлетворяет все требования одного, чтобы я мог передать его в processBag и что будет работать.