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;
}