TypeScript
Как использовать библиотеку javascript без файла определения типа
Поиск…
Вступление
Хотя в некоторых существующих JavaScript-библиотеках есть файлы определения типов , их много.
TypeScript предлагает пару шаблонов для обработки отсутствующих объявлений.
Объявить любую глобальную
Иногда проще просто объявить глобальный тип any
, особенно в простых проектах.
Если у jQuery не было объявлений типа ( оно есть ), вы могли бы поставить
declare var $: any;
Теперь любое использование $ будет напечатано any
.
Создайте модуль, который экспортирует по умолчанию любой
Для более сложных проектов или в случаях, когда вы намереваетесь постепенно вводить зависимость, может быть проще создать модуль.
Использование JQuery (хотя у него есть доступные типы ) в качестве примера:
// place in jquery.d.ts
declare let $: any;
export default $;
И затем в любом файле вашего проекта вы можете импортировать это определение с помощью:
// some other .ts file
import $ from "jquery";
После этого импорта $
будет набираться как any
.
Если в библиотеке имеется несколько переменных верхнего уровня, вместо этого экспортируйте и импортируйте по имени:
// place in jquery.d.ts
declare module "jquery" {
let $: any;
let jQuery: any;
export { $ };
export { jQuery };
}
Затем вы можете импортировать и использовать оба имени:
// some other .ts file
import {$, jQuery} from "jquery";
$.doThing();
jQuery.doOtherThing();
Использовать окружающий модуль
Если вы просто хотите указать намерение импорта (так что вы не хотите объявлять глобальное), но не хотите беспокоиться о каких-либо явных определениях, вы можете импортировать окружающий модуль.
// in a declarations file (like declarations.d.ts)
declare module "jquery"; // note that there are no defined exports
Затем вы можете импортировать из окружающего модуля.
// some other .ts file
import {$, jQuery} from "jquery";
Все, что импортировано из объявленного модуля (например, $
и jQuery
) выше, будет иметь тип any