我正在尝试在我的打字稿模块中导入一个外部模块。在Web应用程序的环境中,已经存在一个模块加载器,并且存在模块“ my-lib”,该模块使用JavaScript编写,并且没有声明文件。
所以,我想需要这个lib,但是要在本地进行模块声明(因为我是当前在此上下文中使用TypeScript的唯一人)。
我尝试使用typeRoots
中的tsconfig.json
设置声明文件的搜索路径。这对/// <reference types="my-lib" />
有效,但对import "my-lib";
无效。只有将@types
文件夹放在node_modules
文件夹中,模块分辨率才能找到并导入。
有什么方法可以设置它,而无需将@types
放在node_modules
文件夹中吗?
tsconfig.json:
{
"compilerOptions": {
"esModuleInterop": true,
"typeRoots": [
"./@types"
]
},
"include": [
"src/**/*"
]
}
@ types / my-lib / index.d.ts:
interface MyLib {
...
}
declare const myLib: MyLib;
export = myLib;
src / entry.ts:
import myLib from "my-lib";
...
webpack.config.js:
...
externals: {
"my-lib": "my-lib"
},
...
答案 0 :(得分:1)
我通过以下tsconfig.json
做到了(我想到):
{
"compilerOptions": {
"esModuleInterop": true,
"typeRoots": [
"./@types"
],
"baseUrl": ".",
"paths": {
"*": [
"*",
"@types/*"
]
}
},
"include": [
"src/**/*",
"@types/**/*"
]
}