Я пытаюсь выяснить, как «обмануть» компилятор, заставив его думать, что я использую некоторые определения.

У меня в конструкторе следующее:

nv.addGraph(()=> {...})

И перед уроком я поставил:

public nv:nv;

А в моей модели есть:

export interface nv{
    addGraph:any;
    models:any;
    utils:any;
}

Однако я все равно получаю сообщение об ошибке:

 error TS2304: Cannot find name 'nv'.

Я уже пробовал другой подход, создав класс:

export class nv{
    addGraph:any
}

Но тогда я получаю следующую ошибку:

error TS2339: Property 'addGraph' does not exist on type 'typeof nv'.

Любые идеи?

0
uksz 23 Дек 2015 в 13:18

2 ответа

Лучший ответ

Вы можете использовать declare var, и вам не нужен какой-либо класс TypeScript:

declare var nv;

nv.addGraph(()=> {
   // something here
});

[Playground]

0
Martin Vseticka 23 Дек 2015 в 15:33

Вы можете использовать объявление типа:

declare class nv {
    addGraph: string;
}

var c = nv();

Это компилируется, но будет работать правильно, только если вы загрузите соответствующую библиотеку.

0
TSV 23 Дек 2015 в 12:04