Получение повторяющейся ошибки «Не удается найти определение типа» в VS Code, но не в TSC - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть приложение, основанное на Next JS, использующее Typescript (основанное на React).

Я обнаружил, что устанавливаю npm i -D @types/XXX достаточно раз, чтобы понять, что что-то не так. Посмотрев на мой файл tsconfig.json, я заметил, что отсутствует compilerOptions.typeRoots, поэтому я добавил следующие строки:

{
    "compilerOptions": {
        ...
        "typeRoots": [
            "node_modules"
        ]
    }
}

После перезапуска моей IDE я наконец смог получить объявления типов своих пакетов без ручная установка типов. Но есть проблема, когда VS Code кричит, что у меня 448 проблем (и это одна и та же проблема):

what the f*** vsc?

, чтобы убедиться, что это не так TS C проблема, я запустил next dev, который в основном работает tsc (среди прочего), и он работает без каких-либо проблем. Я немного растерялся ...

1 Ответ

1 голос
/ 23 апреля 2020

Как правило, типы являются отдельными npm пакетами, поэтому вам необходимо установить их вручную. кроме этого

{
    "compilerOptions": {
        ...
        "typeRoots": [
            "node_modules"
        }
    }
]
}

имеет синтаксическую ошибку

{
    "compilerOptions": {
        ...
        "typeRoots": [
            "node_modules"
        ]
    }
}

это моя конфигурация typeRoots

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

первая для локальных типов, а вторая для установленной типы узловых модулей.

РЕДАКТИРОВАТЬ:

Если у вас есть пакеты, которые не имеют типов, у вас есть три варианта:

  1. создавать объявления типов, правильно их реализуя

declare module "@ampproject" { export function some_function(str: string): string; };

создайте global.d.ts внутри каталога типов и добавьте declare module "*" или просто для @ampproject declare module "@ampproject"; приведение объекта к любому
...