找不到包类型定义
Package type definition cannot be found
我正在使用打字稿进行 AngularJS 项目。我正在尝试使用 js-xlsx
库来解析 xlsx 文件,但出现编译错误:
error TS2304: Cannot find name 'XLSX'
我们正在为所有文件使用全局命名空间,并且由于 outFile
编译器选项,所有编译后的文件都被串联起来。没有配置模块系统,我们将所有 JavaScript 依赖项包含在 index.html
文件中。因此,我们不 import
任何模块。
到目前为止,所有其他依赖项都在 node_modules/@types
下安装了类型定义,并且编译器可以正确识别,如 here 所述。
然而,js-xlsx
包括包中的类型定义,即 node_modules/xlsx/types/index.d.ts
但这不是编译器自动 拾取的。
不幸的是,我无法更改项目结构和模块系统。如何让打字稿编译器识别 xlsx
包的类型定义,以便我可以:
onload(event: any) {
let workbook = XLSX.read(event.target.result, {type: "binary"});
}
没有得到编译器错误并在 VS Code 中得到 intellisense/code 完成。
您可以创建一个将模块公开为全局变量的全局定义。
将项目中任意位置的 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.
我正在使用打字稿进行 AngularJS 项目。我正在尝试使用 js-xlsx
库来解析 xlsx 文件,但出现编译错误:
error TS2304: Cannot find name 'XLSX'
我们正在为所有文件使用全局命名空间,并且由于 outFile
编译器选项,所有编译后的文件都被串联起来。没有配置模块系统,我们将所有 JavaScript 依赖项包含在 index.html
文件中。因此,我们不 import
任何模块。
到目前为止,所有其他依赖项都在 node_modules/@types
下安装了类型定义,并且编译器可以正确识别,如 here 所述。
然而,js-xlsx
包括包中的类型定义,即 node_modules/xlsx/types/index.d.ts
但这不是编译器自动 拾取的。
不幸的是,我无法更改项目结构和模块系统。如何让打字稿编译器识别 xlsx
包的类型定义,以便我可以:
onload(event: any) {
let workbook = XLSX.read(event.target.result, {type: "binary"});
}
没有得到编译器错误并在 VS Code 中得到 intellisense/code 完成。
您可以创建一个将模块公开为全局变量的全局定义。
将项目中任意位置的 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.