TS7016: Не удалось найти файл декларации для модуля «X»

#javascript #typescript

Вопрос:

У меня есть пакет с обычным js, мне нужно использовать его в проекте TS, поэтому он используется tsc для создания типизаций

пакет.json

 {
  "main": "src/index.js",
  "typings": "types/index",
  "private": "true", 
  "devDependencies": {
    "typescript": "^4.2.4"
  },
  "files": [
    "src/**/*",
    "types/**/*"
  ]
}

 

tsconfig.json

 {
  "include": [
    "src/**/*"
  ],
  "compilerOptions": {
    "module": "CommonJS",
    "allowJs": true,
    "declaration": true,
    "emitDeclarationOnly": true,
    "rootDir": "src",
    "outDir": "types"
  }
}

 

Я добавил этот пакет, используя yarn add git https://...

Когда я пытаюсь использовать его, Phpstrom распознает модуль и все его экспортные данные (по индексу) и обеспечивает завершение кода, но под именем модуля есть красная строка с этой ошибкой :

TS7016: Could not find a declaration file for module 'X'. 'Y/node_modules/X/src/index.js' implicitly has an 'any' type.   Try npm install @типы/сигнализация if it exists or add a new declaration (.d.ts) file containing объявляет модуль «X»;`

Но код на самом деле компилируется и работает без ошибок. Но я могу импортировать только из индекса, если я попытаюсь импортировать X/src/a снова, я получу ту же ошибку, но на этот раз phpstorm не предоставит форму завершения кода для экспорта из этого файла.

Итак, почему phpstorm показывает эту ошибку и как я могу ее исправить?

Если я опущу "outDir": "types" и разрешу .d.ts создавать файлы рядом с исходными файлами js, это будет работать просто отлично, но я хочу сохранить .d.ts файлы отдельно, а затем объединить их в один файл, если это возможно.

Если я установлю этот "outFile":"index.d.ts" параметр, то ничего не сработает 😀