我正在使用a library called bexer在一个monorepo中编写包含许多软件包(@bexer/*
)的https://lerna.js.org。
每个包都包含在JSDoc注释内定义的打字稿类型。
任务是在使用我的库的项目中使用这些类型。
*.d.ts
),该声明将被目标项目使用。typescript@3.7.3-insiders.20191118
和以下tsconfig.json
生成类型声明:{
"compilerOptions": {
"noEmit": false,
"declaration": true,
"emitDeclarationOnly": true,
"declarationDir": "./packages/bexer-types",
"noImplicitAny": true,
"strictNullChecks": true,
"allowJs": true,
"checkJs": true,
"target": "ESNext",
"moduleResolution": "Node"
},
"types": [
"chrome"
],
"include": [
"./packages/**/*"
],
"exclude": [
"./packages/rollup.config.js",
"./packages/**/iife/*",
"./packages/bexer-types/bexer-*"
]
}
tsconfig.json
:{
"compilerOptions": {
"noEmit": true,
"noImplicitAny": true,
"strictNullChecks": true,
"allowJs": true,
"checkJs": true,
"target": "ESNext",
"moduleResolution": "Node"
},
"types": [
"chrome"
],
"include": [
"./src/**/*",
"./node_modules/@bexer/components/**/*",
"./node_modules/@bexer/types/**/*"
],
"exclude": [
"./node_modules/@bexer/**/iife",
"./node_modules/@bexer/types/node_modules"
]
}
tsc
后,出现以下错误:node_modules/@bexer/types/bexer-index/esm/index.d.ts:18:24-错误TS7016:找不到模块'@ bexer / utils'的声明文件。 '/home/ilyaigpetrov/Projects/bexer/packages/bexer-types/node_modules/@bexer/utils/esm/index.js'隐式地具有“ any”类型。
的新声明(.d.ts)文件。
如果存在,请尝试npm install @types/bexer__utils
或添加一个包含declare module '@bexer/utils';
从“ @ bexer / utils”以实用程序的形式导入18 *;
因此,index.d.ts
中的types/bexer-index
的导入方式如下:
import * as Utils from "@bexer/utils";
无法在@bexer/types/bexer-utils/esm/index.d.ts
处找到类型声明,并且TypeScript建议将declare module '@bexer/utils';
添加到声明文件中。
但是,手动将declare module...
置于@bexer/types/bexer-utils/esm/index.d.ts
并不能消除该错误。
我的问题:
UPD :
在目标项目中,我有globals.d.ts
的内容:
interface Window {
Bexer: typeof import('@bexer/types/bexer-index/esm/index')
}
答案 0 :(得分:0)
我找到的唯一解决方案是:
@bexer/index/esm/index.js
应该与@bexer/index/esm/index.d.ts
一起陪伴。