2013-09-13 2 views
7

C: \ DEV \ OpenCMS \ Сайт \ Frontend \ Scripts \ Libs \ sinnovations> TSC sinnovations.listv iewbase.ts --module драм C:/dev/OpenCMS/Веб-сайт/Frontend/Scripts/libs/sinnovations/sinnovations.listviewb ase.ts (11,5): ошибка TS2025: «Столбцы открытого свойства» экспортированного класса имеет или использует закрытый тип «KnockoutObservableArray».Открытое свойство экспортируемого класса использует частный тип ошибки в машинописном

/// <reference path="../../typings/knockout/knockout.d.ts" /> 
import ko = require('knockout'); 

interface Column { 
    label: string; 
} 

var _templateBase = '/Frontend/Templates/ListView/'; 
class ListViewBase<T> { 

    columns: KnockoutObservableArray<Column> = ko.observableArray([]); 
    rows: KnockoutObservableArray<T> = ko.observableArray([]); 

    constructor(public templateHeaderRow = _templateBase+'DefaultTableHeaderTemplate', public templateBodyRow = _templateBase + 'DefaultTableRowTemplate') { 

    } 

    addColumn(column: Column) { 
     this.columns.push(column); 
    } 

    addRow(row: T) { 
     this.rows.push(row); 
    } 

    static configure(templateBase) { 
     _templateBase = templateBase; 
    } 
} 

export = ListViewBase; 

Я понимаю ошибку, но не знаю, как еще получить эффект выше. У любого есть решение для экспорта некоторых интерфейсов по классу, который экспортируется как export = class?

ответ

7

Боюсь, вам нужно определить интерфейс в другом файле. например

a.ts:

interface Column { 
    label: string; 
} 

и ваш код:

/// <reference path="../../typings/knockout/knockout.d.ts" /> 
/// <reference path="./a.ts" /> 
import ko = require('knockout'); 


var _templateBase = '/Frontend/Templates/ListView/'; 
class ListViewBase<T> { 

    columns: KnockoutObservableArray<Column> = ko.observableArray([]); 
    rows: KnockoutObservableArray<T> = ko.observableArray([]); 

    constructor(public templateHeaderRow = _templateBase+'DefaultTableHeaderTemplate', public templateBodyRow = _templateBase + 'DefaultTableRowTemplate') { 

    } 

    addColumn(column: Column) { 
     this.columns.push(column); 
    } 

    addRow(row: T) { 
     this.rows.push(row); 
    } 

    static configure(templateBase) { 
     _templateBase = templateBase; 
    } 
} 

export = ListViewBase; 
+0

Хорошо. Думаю, мне просто нужно привыкнуть к определению моих интерфейсов в отдельных файлах. Спасибо –

+2

У меня только один файл со всеми нашими интерфейсами называется * types.ts * – basarat

Смежные вопросы