Avo*_*vol 9 typescript typescript-typings
我有一些模块lib中node_modules,我想使用它.我写的lib.d.ts是这个.
文件看起来像:
/src/
main.ts (imports `lib`)
/types/
lib.d.ts
Run Code Online (Sandbox Code Playgroud)
在文件中main.ts我可以写这段代码:
/// <reference path="../types/lib.d.ts" />
import {some} from 'lib';
Run Code Online (Sandbox Code Playgroud)
它有效.
但是当我尝试使用import for ambient declaration file时:
import '../types/lib';
import {some} from 'lib';
Run Code Online (Sandbox Code Playgroud)
它编译没有错误,但在生成JS我可以找到此文件的require:
require('../types/lib');
const lib_1 = require('lib');
Run Code Online (Sandbox Code Playgroud)
在丢失文件的运行时出错../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"
]
}
Run Code Online (Sandbox Code Playgroud)
早期我尝试将我的.d.ts添加到typessection,但在这种情况下,tcs尝试在node_modules/@ types目录中找到此文件.
建议后,我尝试在files部分中添加文件:
"files": [
"index.ts",
"types/lib.d.ts"
]
Run Code Online (Sandbox Code Playgroud)
这是有效的,似乎是一个很好的解决方案.
您没有import环境定义文件.
你可以手动/// <reference它.但正确的方法是通过文件使编译器可以使用它tsconfig.json.
其中一个例子tsconfig.json包括node_modules:
{
"compilerOptions": {
"module": "commonjs",
"target": "es5"
},
"exclude": [
"node_modules"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11215 次 |
| 最近记录: |