gpt4 book ai didi

typescript - 我可以导入 *.d.ts 而不是要求它吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:52 27 4
gpt4 key购买 nike

我在 node_modules 中有一些模块 lib,我想使用它。我为此编写了 lib.d.ts

文件看起来像:

/src/
main.ts (imports `lib`)
/types/
lib.d.ts

在文件 main.ts 中,我可以编写以下代码:

/// <reference path="../types/lib.d.ts" />
import {some} from 'lib';

而且有效。

但是当我尝试对环境声明文件使用导入时:

import '../types/lib';
import {some} from 'lib';

它编译没有错误,但在生成的 JS 中我可以找到这个文件的要求:

require('../types/lib');
const lib_1 = require('lib');

缺少文件 ../types/lib 运行时出错 –它只是一个没有结果文件的环境声明文件。

为什么编译器没有移除 *.d.ts 文件的导入?
我可以以某种方式使用导入,还是必须改用引用?

解决方案:

如果你不想使用reference指令,您可以将所需的 *.d.ts 添加到文件中,包含在您的 tsconfig.json 中。

我的 tsconfig.json 是:

{
"compilerOptions": {
"module": "commonjs",
"target": "es2015",
"lib": ["es2016"],
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"strictNullChecks": true,
"noFallthroughCasesInSwitch": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noEmitOnError": true,
"newLine": "LF",
"forceConsistentCasingInFileNames": true,
"removeComments": true,
"declaration": false,
"sourceMap": false,
"outDir": "../build",
"types": [
"node"
]
},
"files": [
"index.ts"
]
}

早期我尝试将我的 .d.ts 添加到 types 部分,但在这种情况下tcs 正在尝试在 node_modules/@types 目录中找到此文件。

根据建议,我尝试在 files 部分添加文件:

    "files": [
"index.ts",
"types/lib.d.ts"
]

它的工作原理似乎是一个很好的解决方案。

最佳答案

您不必 import环境定义文件。

您可以手动 /// <reference它。但正确的方法是通过文件 tsconfig.json 使其可供编译器使用。 .

tsconfig.json 的例子包括除node_modules以外的任何内容:

{
"compilerOptions": {
"module": "commonjs",
"target": "es5"
},
"exclude": [
"node_modules"
]
}

documentation on tsconfig.json is here .

关于typescript - 我可以导入 *.d.ts 而不是要求它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40949693/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com