Typescript: Что делать, если тиски (или tsd) недоступны?

Я смотрел справочник typescript, и я не могу найти ответ.

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

Один из них - создать файл типизации, но этого я действительно не хочу делать.

Каковы мои другие варианты, похоже, я помню какое-то ключевое слово 'declare'?

Или может быть что-то в tsconfig?

Я предполагаю, что существует способ объявить эту переменную (тип) глобально, поэтому каждый раз, когда я ее использую, она просто работает.

И я предполагаю, что есть способ просто объявить его доступным только в одном файле.

Я все еще очень смущен.

Конечно, лучшим способом было бы включить файл типизации, но это не всегда будет доступно.

Любая помощь действительно ценится

Спасибо

Ответы

Ответ 1

Если ваша главная задача - просто избавиться от ошибок, вы можете просто написать declare var MyUntypedLibrary: any; над вашим кодом, где MyUntypedLibrary - это имя глобальной ссылки на вашу зависимость.

Если вам нужна эта ссылка в нескольких файлах и вы не хотите повторять ее, вы можете записать ее в верхней части любого файла, над любыми пространствами имен, и она будет доступна для всего проекта. Если у вас много нетипизированных зависимостей, было бы неплохо иметь отдельный ts файл, где вы их определяете.

Примечание. Это прекрасно работает при использовании локальных модулей. Я предполагаю, что это может быть более неприятным, если вы используете внешние модули и хотите иметь одно место для определения имплицитной зависимости для всех, но потом каждый модуль должен обрабатывать собственные зависимости внутри. В любом случае,

Ответ 2

Хотя лучше всего было бы создать свой собственный файл определения (.d.ts), клонировать https://github.com/DefinitelyTyped/DefinitelyTyped репозиторий, добавить к нему, и создать запрос на извлечение обратно в их багажник; вы хотите быстрее найти решение.

Вы можете написать свой собственный файл простейшего определения, соответствующий вашей потребности, и добавить его в свой проект, отсюда не допустить, чтобы определения принимались/читались, чтобы объединиться в DefTyped trunk.

Однако вы могли бы написать свой простой файл def и создать запрос на pull в любом случае, небольшой файл def лучше, чем никакой файл def;)

Дополнительные инструкции для создания вашего определения: http://definitelytyped.org/guides/creating.html

Простой пример:

 interface JQuery {

    /* wrapped plugins */

    dynatree(options: any): any;

    multiselect(): JQuery;
    multiselect(MultiSelectSettings): any;
    multiselect(command: string): any;

    ajaxSubmit(options: any);
    layout(options: any);

    colpick(options?: any);
    colpickHide();

    idcDataTable(options?: any);

    dragscrollable(options: any);

    /* wrapped plugins - END */
}

interface JQueryStatic {
    layout: any;

    fileDownload: any;

    pnotify: any;

    sha256(input: string): string;
}