Определение типа пакета не найдено
Я работаю над проектом AngularJS, используя машинопись. Я пытаюсь использовать js-xlsx
библиотека для анализа файла xlsx, и я получаю ошибку компиляции:
error TS2304: Cannot find name 'XLSX'
Мы используем глобальное пространство имен для всех файлов, и все скомпилированные файлы объединяются из-за outFile
опция компилятора. Система модулей не настроена, и мы включаем все наши зависимости JavaScript в index.html
файл. Поэтому мы не import
любые модули.
Все остальные зависимости до этого момента имеют определения типов, установленные в node_modules/@types
и правильно распознаются компилятором, как описано здесь.
js-xlsx
однако включает в себя определения типов в пакете, т.е. node_modules/xlsx/types/index.d.ts
но это не принимается автоматически компилятором.
К сожалению, я не могу изменить структуру проекта и систему модулей. Как заставить компилятор машинописи распознавать определения типов xlsx
пакет, чтобы я мог сделать:
onload(event: any) {
let workbook = XLSX.read(event.target.result, {type: "binary"});
}
без получения ошибок компилятора и получения intellisense/ дополнения кода в VS Code.
1 ответ
Вы можете создать глобальное определение, которое представляет модуль как глобальную переменную.
Спасти index.d.js
в любом месте вашего проекта, как js-xlsx.d.ts
В том же месте добавьте файл js-xlsx-global.d.ts
import * as xlsx from './js-xlsx'
declare global {
export var XLSX: typeof xlsx;
}
Теперь вы можете использовать ///
ссылки в файлах, чтобы получить XLSX
переменная для правильного ввода
/// <reference path="./js-xlsx-global.d.ts" />
XLSX.read(null, { type: "binary"}); // works, and is checked.