У меня странная проблема с TypeScript / VSCode (я даже не знаю, какой).
Я использую TypeScript для проверки типов кода, который я пишу в определенном проекте.Все файлы кода являются файлами *.ts
и *.tsx
, и они используют ESM (import
/ export
в собственном JavaScript), а не разрешение модуля TypeScript.Это прекрасно работает, потому что TSC оставляет операторы import
/ export
без изменений, поэтому браузер может выполнять их как JavaScript.
Дело не в том, что все импортируется как модуль, некоторые вещи доступны как глобальные переменные UMD,Это хорошо для этого проекта.Типы глобалов UMD задаются с помощью types
в tsconfig.json
.
TSC сообщает, что XYZ относится к глобальному UMD, но текущий файл является модулем.Попробуйте добавить импорт вместо ошибка.Это не ошибка, и я не собираюсь делать это, поэтому вместо этого я решил отключить эту ошибку, используя allowUmdGlobalAccess
в tsconfig.json
, что заставляет TSC больше не сообщать об этом как об ошибке.
Однако VSCodeпо-прежнему подчеркивает различные символы пунктирными линиями.Однако, когда все закончилось, они по-прежнему говорят то же самое, они просто больше не отображаются как ошибки и не отображаются на панели «Проблемы».
Я запустил tsc -p . --diagnostics
, чтобы посмотреть, есть ли диагностические элементы (подсказки, а не ошибки).) что TSC все еще сообщает, но эта команда фактически ничего не сообщала, так что я думаю, что это VS Code и сервер языковой службы TypeScript?
Код, который вызывает это:
// The below is needed because TypeScript is stubborn about extensions
// @ts-ignore
import App from './App.tsx';
window.addEventListener('load', () => {
// This is a strongly typed UMD global not a module import
ReactDOM.render(<App />, document.getElementById('root'));
});
ОбаReactDOM
и App
(из-за того, что TSX является React.createElement
, а React
также является строго типизированным глобальным UMD) подчеркнуты и показывают эту подсказку.
Есть ли способ отключить это?