使用本地声明文件

时间:2018-07-06 10:42:30

标签: typescript webpack webpack-externals declaration-files

我正在尝试在我的打字稿模块中导入一个外部模块。在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"
},
...

1 个答案:

答案 0 :(得分:1)

我通过以下tsconfig.json做到了(我想到):

{
    "compilerOptions": {
        "esModuleInterop": true,
        "typeRoots": [
            "./@types"
        ],
        "baseUrl": ".",
        "paths": {
            "*": [
                "*",
                "@types/*"
            ]
        }
    },
    "include": [
        "src/**/*",
        "@types/**/*"
    ]
}