![](/img/trans.png)
[英]How to bundle many TypeScript declaration files into an npm package and import from index.d.ts?
[英]Import a package which already ships an index.d.ts
例如,
yarn add http-status-codes
如果我从该包中导入某些内容,例如
import { BAD_GATEWAY } from 'http-status-codes';
Typescript抱怨“找不到模块http-status-codes”。 但是 http-status-codes已经提供了它自己的index.d.ts
类型定义文件。
出于某种原因,这种行为只能用“目标”可重放:“ES6”以上 (没有问题"es5"
出于某种原因)。
为什么我不能使用可用的打字文件? 这不是现代包装应该像开箱即用那样工作的方式,也就是不需要额外的yarn add @types/http-status-codes
吗? (实际上并不存在)。 从包含其类型定义的包中导入,我该怎么做? 为什么这不是默认值?
如果指定es6
则模块系统将默认为该版本的ES的本机模块系统( ES2015
模块系统)。 从文档中 :
有两种可能的模块解析策略:Node和Classic。 您可以使用--moduleResolution标志来指定模块解析策略。 如果未指定,则默认值为--module AMD | Classic。 系统| ES2015或Node。
你可以阅读更多的信息,但该文档clasic
解决策略不使用node_modules
找到的定义,而node
模仿发现模块的节点方式(看起来在node_modules
的定义)。
您需要在moduleResolution
tsconfig.json
添加tsconfig.json
选项:
{
"compilerOptions": {
"moduleResolution": "node",
"target": "es6",
}
}
这适用于es5
因为对于es5
,模块系统默认为"CommonJS"
( 请参阅docs ),默认情况下使用节点解析。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.