如何在基础包扩展Window接口并让消费包识别其类型定义
解决Package A扩展Window类型无法被Package B识别的问题
先把Package A的类型配置做对
首先得在Package A的package.json里加types字段,明确指向你的全局类型定义文件。比如你的global.d.ts在src/typings下,就这么写:{ "types": "./src/typings/global.d.ts" }要是你把代码打包到了
dist目录,就改成打包后的路径。另外,Package A的tsconfig.json里,include数组得包含这个类型文件,避免编译时被忽略:{ "include": ["src/**/*", "src/typings/**/*.d.ts"] }让Package B能读到类型
要是Package B的tsconfig.json里配置了types数组,TypeScript只会加载数组里指定的类型,这时候得把Package A加进去:{ "compilerOptions": { "types": ["package-a"] } }要是没配
types数组,只要Package A的package.json里types字段正确,TypeScript会自动扫描依赖的类型,不用额外配置。检查类型文件的模块设置
你现在的global.d.ts里有export {};,这个是对的——必须把文件变成模块,才能扩展全局的Window接口。别在Package A的tsconfig.json的exclude里把这个文件排除掉。本地开发/发布的额外检查
要是用npm link或者yarn link做本地调试,TypeScript有时候会识别不到链接包的类型,这时候可以在Package B的tsconfig.json里手动加类型路径:{ "compilerOptions": { "typeRoots": ["./node_modules/@types", "./node_modules/package-a/src/typings"] } }要是发布到npm,得确保类型文件被包含在发布包里,在Package A的
package.json的files数组里加上路径:{ "files": ["src", "dist", "src/typings/global.d.ts"] }
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

