Импорт внешнего пакета webpack в TypeScript с локальным файлом декларации

Я пытаюсь импортировать внешний модуль в моем модуле машинописи. В среде веб-приложения уже есть загрузчик модулей и модуль "my-lib", который написан на JavaScript и не поставляется с файлом декларации.

Итак, я хочу потребовать эту библиотеку, но иметь объявление модуля локально (так как я единственный, кто в настоящее время использует 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/**/*"
    ]
}

@ типы / мой Пб /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 ответ

Я сделал это со следующим tsconfig.json (только что пришло мне в голову):

{
    "compilerOptions": {
        "esModuleInterop": true,
        "typeRoots": [
            "./@types"
        ],
        "baseUrl": ".",
        "paths": {
            "*": [
                "*",
                "@types/*"
            ]
        }
    },
    "include": [
        "src/**/*",
        "@types/**/*"
    ]
}
Другие вопросы по тегам