Расширенный tsconfig. json не может найти определение типа пакета с ограниченным объемом в VSCode - PullRequest
0 голосов
/ 06 августа 2020

Проблема:

Я использую пакет с ограниченной областью видимости (например, @ews/ntlm-client), который не имеет встроенных определений типов. Я создал определения настраиваемого типа локально в основном tsconfig.json, а затем использовал расширенный tsconfig.json. Но VSCode жалуется, что расширенный tsconfig.json не может найти определения для пакета с ограниченной областью видимости.

Что я пробовал:

Я создал определение типа и поместил его в <baseurl>\typedefs\@types\@ews\ntlm-client\index.d.ts:

declare module '@ewsjs/ntlm-client' {
    function createType1Message(workstation?: string, domain?: string): string;
    function decodeType2Message(wwwAuthenticate?: string | null): any;
    function createType3Message(type2msg: any, username?: string, password?: string, workstation?: string, domain?: string): string;
}

Я добавил папку определений типов в свой <baseurl>\tsconfig.json. Обратите внимание, я не использую транспилятор tsc, поскольку кодирую JS, а не TS:

{
    "compilerOptions": {
        "allowJs": true,
        "checkJs": true,

        "lib": ["ES2019"],
        "module": "CommonJS",
        "target": "ES2019",
        "noEmit": true,

        "typeRoots": ["./node_modules/@types", "./typedefs/@types"]
    }
}

, а затем расширил tsconfig, используя <baseurl>\a\b\tsconfig.json:

{
    "extends": "../../tsconfig.json"
}

Но я получаю следующую ошибку кода Visual Studio в моем <baseurl>\a\b\tsconfig.json:

enter image description here

Why is this happening? I also have type definitions for other modules in my custom @types folder, but they don't seem to throw the same error.

введите описание изображения здесь

Я также замечаю, что мой основной <baseurl>\tsconfig.json, похоже, не имеет этой ошибки.

1 Ответ

0 голосов
/ 06 августа 2020

Определения для Scoped Packages имеют другое соглашение об именах файлов:

удалите префикс @ и измените прямой sla sh на двойное подчеркивание

Например, типы для @types/@babel/traverse должны быть найдены в @types/babel__traverse/index.d.ts.

...