Определение типа пакета не найдено - PullRequest
0 голосов
/ 22 мая 2018

Я работаю над проектом 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.

1 Ответ

0 голосов
/ 22 мая 2018

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

Сохраните 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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...