322 文字
2 分
Web ComponentsのReact v19対応
グルーバルな JSX 名前空間の削除
React v19 では、React.JSX を優先するために、グローバル JSX 名前空間が削除された。 これにより、JSX を利用する異なるライブラリとの衝突を防ぐことができる。
https://react.dev/blog/2024/04/25/react-19-upgrade-guide#the-jsx-namespace-in-typescript
Web components 用の型定義
グローバル JSX 名前空間が削除により、React v19 では web components を React で利用する場合の型定義は次のように変更する必要がある。
import "react";
declare module "react" { namespace JSX { interface IntrinsicElements { "my-element": { myElementProps: string; }; } }}
web components ライブラリでの対応
私が業務で開発している web components を利用したライブラリでは、次のような利用を想定して React 用の型定義を提供している。
/// <reference types="some-components/jsx" />
グローバルな JSX 名前空間を利用され、React v19 向けに型の変更が必要になった。
しかし、ライブラリを利用している側がすぐに React v19 に上げられるわけではなく、React v18 向けの型定義を引き続き提供する必要があった。また React v19 用の型定義は、React v18 までの型定義とは互換性がないため、次のように別途型定義を提供することにした。
/// <reference types="some-components/react" />
Web ComponentsのReact v19対応
https://blog.ohirunewani.com/posts/web-components-with-react-v19/