2014-12-05 2 views
0

Я хотел бы создать файл определения для DataTables 1.9.4, но я понятия не имею, как бороться со следующим API. Существует метод с тем же именем, что и переменная. например:Такое же имя и метод имя TypeScript

state(); 
state.clear(); 
state.loaded(); 

Я хотел бы сделать это следующим образом:

interface API { 
    //... 
    state(): any; 
    state: StateInterface; 
    //... 
} 
interface StateInterface { 
    clear(): API; 
    loaded(): any; 
} 

Но это приносит "Дубликат идентификатор" ошибка ...

Btw. Определение уже существует, но для старого API

ответ

0

Довольно просто:

interface State{ 
    ():any; 
    clear:()=>any; 
    loaded:()=>any; 
} 
declare var state:State; 

state(); 
state.clear(); 
state.loaded(); 
+0

Прохладный, метод без имени делает вещь. Благодаря :-) – Wolfy2k

0

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

declare function state(): void; 
declare module state { 
    export function clear(): void; 
    export function loaded(): void; 
} 

Это позволяет вызывать все эти методы:

state(); 
state.clear(); 
state.loaded(); 

Если вы ищете конкретную версию (не эмбиент декларации) вот пример:

function state(): void { 
    console.log('state'); 
} 

module state { 
    export function clear(): void { 
     console.log('clear'); 
    } 

    export function loaded(): void { 
     console.log('loaded'); 
    } 
} 
Смежные вопросы