У меня есть тестовый проект, в котором я тестирую файлы определения типа. В проекте есть один файл с именем index.ts
, который выглядит следующим образом:
import i18nFu = require("gettext.js");
gettext . js пакет был установлен с использованием Node.js следующим образом: npm install gettext.js
VS Code отображает следующее сообщение об ошибке для строки выше:
Не удалось найти файл объявления для модуля 'gettext. js'.
'SOME_PATH / gettext. js 'неявно имеет тип' any '.
Попробуйте' npm install @ types / gettext. js ', если он существует, или добавьте новый файл объявления (.d.ts). содержащий "Объявить модуль 'gettext. js';"
Установка модуля @types/gettext.js
устраняет проблему. Но мне любопытно, поэтому я не остановился на этом. Я снова удалил модуль @types/gettext.js
и попытался создать файл объявления самостоятельно.
Я создаю подпапку с именем types/gettext.js
в папке моего проекта и скопировал в нее содержимое старой папки node_modules/@types/gettext.js
. Я также добавил запись typeRoots
в свой файл tsconfig.json
, чтобы он выглядел так:
{
"compilerOptions": {
"lib": ["ES2017"],
"module": "commonjs",
"strict": true,
"target": "es5",
"typeRoots": ["./types", "./node_modules/@types"],
},
"files": ["test.ts"]
}
Но сообщение об ошибке не исчезнет. Замена содержимого файла types/gettext.js/index.d.ts
(, который вы можете увидеть здесь ) на declare module 'gettext.js'
(как указано в сообщении об ошибке) действительно устраняет ошибку. Но это не решение для наличия типов. Чего мне не хватает?
PS: Меня не интересует работа с хакерскими решениями, такими как ts-ignore
или настройка noImplicitAny
на false
.