如何解决js库类型报错
一个ts项目,当引入一个库,这个库没有类型声明,编译器会有如下提示
Could not find a declaration file for module ''
为了在代码中,不出现报错的提示,在全局的.d.ts文件中配置,忽略这个库的类型校验
declare module 'jsencrypt'
declare关键字作用:用于告知ts编译器某个实体(变量/函数/模块)已在外部存在,无需实现细节
实际的作用是:允许在typeScript 项目中直接导入 import JsEncry from 'jsencry' 而不触发类型错误
declare global 和 declare module区别
- declare global
作用域:全局命名空间(widnow、document) 示例:添加全局类型声明
declare global {
interface Window {
dra: any; // 为全局window对象添加dra属性
}
}
2.declare module
作用域:声明外部模块类型
示例:为无类型声明的js库添加类型(如第三方sdk)
declare module '@legos/js-security-v3'
| 特性 | declare global | declare module |
|---|---|---|
| 作用域 | 全局 | 外部模块作用域 |
| 场景 | 扩展浏览器环境对象 | 为js库添加类型声明 |
| 声明位置 | 环境声明文件(d.ts) | 类型定义文件(d.ts) |