Я использую пользовательские элементы или веб-компоненты внутри Preact . Проблема в том, что Typescript жалуется на то, что элементы не определены в JSX.IntrinsicElements
- в этом случае элемент check-box
:
<div className={styles.option}>
<check-box checked={this.prefersDarkTheme} ref={this.svgOptions.darkTheme}/>
<p>Dark theme</p>
</div>
Сообщение об ошибке (путь не указан):
ERROR in MyComponent.tsx
[tsl] ERROR in MyComponent.tsx(50,29)
TS2339: Property 'check-box' does not exist on type 'JSX.IntrinsicElements'.
Я столкнулся со следующими, к сожалению, не работающими, возможными решениями:
- { ссылка } - Это ответ на вопрос не совсем понятен, но он охватил мою проблему
Я попытался добавить следующее в мой typings.d.ts
файл:
import * as Preact from 'preact';
declare global {
namespace JSX {
interface IntrinsicElements {
'check-box': any; // The 'any' just for testing purposes
}
}
}
Моя среда IDE затеняет часть импорта и IntrinsicElements
, что означает, что она не используется (?!) и это все равно не сработало. Я все еще получаю то же сообщение об ошибке.
{ ссылка } - Также для реакции я попытался «преобразовать» его в preact и получил те же результаты, что и для 1. Я даже нашел файл , поддерживаемый google в проекте squoo sh, где они сделали следующее, чтобы «заполонить» поддержку:
В той же папке, что и компонент, файл missing-types.d.ts
со следующим содержимым, в основном те же настройки, что и у меня, но с файлом index.ts
вместо check-bock.ts
, и они используют более старую версию TS v3.5.3
:
declare namespace JSX {
interface IntrinsicElements {
'range-input': HTMLAttributes;
}
}
Я предполагаю, что их сборка не завершилась, так как она работает и как правильно определить пользовательские элементы для использования их в компонентах preact / реагировать?
Я сейчас использую typescript@v3.8.3
и preact@10.3.4
.