在TypeScript 3.8.3中导入win32-api包的兼容问题求助
TypeScript 3.8.3导入win32-api的临时解决办法
问题原因
你的理解没错,但TypeScript 3.8.3的skipLibCheck仅对node_modules/@types目录下的类型文件生效,而win32-api自带的.d.ts属于包内部的类型定义,不在这个规则覆盖范围内,所以配置后无法跳过对它的检查。
临时解决办法
办法1:自定义兜底类型声明文件
在项目根目录创建win32-api.d.ts文件,内容如下:declare module 'win32-api' { const win32Api: any; export = win32Api; }TypeScript会优先读取项目内的自定义类型声明,自动忽略包内的错误
.d.ts文件。办法2:编译时排除包内类型文件
修改tsconfig.json,添加exclude配置明确跳过win32-api的类型文件:{ "compilerOptions": { "module": "CommonJS", "target": "ES2017", "skipLibCheck": true }, "exclude": [ "node_modules/win32-api/**/*.d.ts" ] }办法3:单场景忽略检查
如果仅这一处动态导入,可直接在语句前加// @ts-ignore跳过类型检查:// @ts-ignore import("win32-api").then(module => { console.log(`Loaded ${module}`); });
关于动态import的疑问
动态import本身和编译错误无关——编译阶段TypeScript仍会解析模块的类型定义,运行时的系统适配逻辑不会影响编译时的类型检查。
内容的提问来源于stack exchange,提问作者Motti
相关产品推荐
相关产品推荐

