2017-01-27 13 views
1

Итак, у меня есть сторонняя библиотека с глобальными функциями, доступными как jQuery: $ .functionName(), но не файл определения. Поэтому я хотел написать свой собственный файл, но я не могу заставить ссылку/импорт работать.Файл определения пользовательского определения TypeScript

Если я пишу мои заявления встраивать это работает отлично:

declare let a:string; 

myClass { 
    constructor() { 
     console.log(a); 
    } 
} 

Но если я объявляю его в другом файле я не могу заставить его работать:

myDeclaration.d.ts

export declare let a:string; 

myClass.ts

/// <reference path="myDeclaration.d.ts" /> 

myClass { 
    constructor() { 
     console.log(a); 
    } 
} 

Я также пробовал import * as a from "myDeclaration". Он всегда говорит: Cannot find name 'a'

ответ

0

Нельзя использовать экспорт с объявлениями ambient.

Просто удалите экспорт из вас .d.ts, как это:

declare let a:string 

Обычно вы можете даже удалить <reference path=""> в качестве декларации должны быть доступны всем вашим проектом.

Вы должны использовать export declare при написании определения для модуля, который импортируется, библиотека JS НПМ, например, и использовать ambient определение, когда объект будет доступен по всему миру без каких-либо импорта (JQuery импортируемого <script>, например).

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