#typescript
#typescript
Вопрос:
Я создал файл omnivore.d.ts
, чтобы заставить typescript игнорировать, что в этой библиотеке нет доступных типов. В файле у меня есть строка
declare module '@mapbox/leaflet-omnivore'
Когда я запускаю vue-cli-service lint
свой проект, он выдает ошибку в строке
error: Parsing error: Unexpected token, expected "{"
> 1 | declare module '@mapbox/leaflet-omnivore'
| ^
Я выполнил несколько поисковых запросов и вижу другие сообщения, включающие объект после строки, но я не вижу, что я должен добавить в этом случае. Из того, что я могу сказать, в этом коде нет ничего функционально неправильного, потому что страница, похоже, загружается и работает нормально, но из-за этой ошибки lint мой CI не работает.
Комментарии:
1. Вы можете начать с добавления
{}
2. @AlekseyL. Это приводит к новой ошибке lint
Empty block statement (no-empty)
3. Таким образом, вы можете добавить некоторые типы или отключить это правило для этой строки
4. @Qwertie Попробуйте добавить точку с запятой (;) в конце вашего заявления declare (
declare module '@mapbox/leaflet-omnivore';
)
Ответ №1:
Я изменил его на
declare module '@mapbox/leaflet-omnivore' {/* empty */}
это то, что eslint предлагает для блоков, которые должны быть пустыми.
Комментарии:
1. вы не получаете ошибку lint при импорте из ‘@mapbox / leaflet-omnivore’?
2. Да, @Avinash Я получаю ошибку lint при импорте / использовании имен классов при таком подходе. Это исправляет первоначальную ошибку, но создает новую.
This expression is not callable. Type 'typeof import("classnames")' has no call signatures.ts(2349)
Ответ №2:
Эта ошибка возникает, когда я начал с lint-staged
, почему я указал только конец расширений *. {js, jsx, ts, tsx}
, заставляя lint проверять все файлы, в которых они есть.
Это сработало для меня: добавьте !
оператор к расширению, которое вы хотите игнорировать:
Это работает!
{
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"*.{js,jsx,ts,tsx}, !*.d.{ts}": [
"yarn run lint"
]
}
}