首页 > 解决方案 > 创建外部模块时打字稿类型不匹配

问题描述

我正在使用 TypeScript 并使用 nestjs 和 typeorm 创建一个 API。项目中的一些模块通过将它们提取到自己的节点模块中来实现可重用。这导致Repository外部模块中的Repository类型与原始包中的类型不同。所以当使用外部模块时,我得到了错误

Argument of type 'import("/Users/user/project/node_modules/typeorm/repository/Repository")
.Repository<import("/Users/project/src/user/user.entity").User>' 
is not assignable to parameter of type 
'import("/Users/user/my-module/node_modules/typeorm/repository/Repository")
.Repository<import("/Users/project/src/user/user.entity").User>'.

typeorm 包在节点包中被列为 peerDependency,因此它应该始终相同。

标签: node.jstypescriptnestjstypeorm

解决方案


您的外部库似乎有自己的类型定义。在此线程中,建议将导入映射到node_modules您手动下的文件夹package.json

"paths": {
  "typeorm": ["node_modules/typeorm"],
  "typeorm/*": ["node_modules/typeorm/*"]
}

这可能只是使用时的问题npm link


推荐阅读