【发布时间】:2019-04-09 02:22:22
【问题描述】:
我正在尝试构建一个我知道只会被另一个 TypeScript 项目使用的私有模块。
据此 (https://github.com/Microsoft/TypeScript/issues/5225) 我应该能够简单地导入我的其他项目而无需构建类型定义。
问题是当我尝试导入该库时,我缺少该库的任何依赖项的类型定义。
情况如下:
假设您有两个项目。 lib 和 app。 app 导入 lib,一个纯 TypeScript 节点模块。
app 只需从lib 导入一个函数并运行它:
import lib from "lib";
lib("test");
Lib 导入一个依赖及其类型,并导出一个函数:
package.json:
"dependencies": {
"dotenv": "^6.1.0"
},
"devDependencies": {
"@types/dotenv": "^4.0.3",
"typescript": "^3.1.6"
}
app/src/index.ts:
import dotenv from "dotenv";
dotenv.load()
export default (message: string) => {
console.log(message);
}
当我尝试构建 app 时,我从 lib 依赖项中收到有关缺少类型定义的错误:
处理这种情况的正确方法是什么?它可以在混合的 JS / TS 模块中正常工作,因为“编译边界”将在导入的模块及其暴露的类型处结束,但由于该模块是“纯”TypeScript,它会抓取它的所有依赖项,就好像这是一个大型回购。
设置的正确方法是什么?还是npm install 没有安装开发依赖项的真正问题?我应该将所有 @types 安装为产品依赖项吗?
【问题讨论】:
标签: node.js typescript