我正在尝试在我的打字稿模块中导入一个外部模块。在 web 应用程序的环境中,已经有一个模块加载器,并且存在模块“my-lib”,它是用 JavaScript 编写的,不附带声明文件。
所以,我想要这个库,但在本地有模块声明(因为我是目前唯一在这种情况下使用 TypeScript 的人)。
我尝试使用typeRoots
in设置声明文件的搜索路径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"
},
...