451 文字
2 分
Frontend Weekly 2023-06-14
Matsuri-tech Frontend Weekly 2023-06-14
TypeScript 5.1
2023 年 6 月 1 日に TypeScript 5.1 がリリースされました。あまり話題になっていない気がしますが、面白い変更が入っているのでいくつか取り上げます。
https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/
返り値が undefined な関数で 暗黙的な return が許容されるように変更
次のようなコードが許容されるようになりました。
const f = (): undefined => { // no returns};
返り値の型を void にすれば良いだけでは?とも思いますが、利用しているライブラリなどが undefined の返り値を要求しているケースで記述が楽になります。
interface SuperComponentProps { customValues: (values: string[]) => undefined | string[]; authUser: (user?: User) => undefined | string;}
<SuperComponent customValues={(values: string[]) => { const result = extractSuperValues(values); if (Array.isArray(result)) { return result; } if (Object.hasOwn(result, "data")) { return result.data; } // .. // no returns }} authUser={(user) => { if (user?.info) { return user.name; } // no returns }}/>;
JSX のカスタマイズ、非同期 RSC のサポート
今まで Next.js の App Router などで非同期なサーバーコンポーネントを記述すると、Promise は有効な JSX 要素ではないというエラーが出ていましたが、JSX の型をカスタマイズ出来るようになったため、これに対応できるようになりました。
既に@types/react に変更が入っているため、バージョンを上げれば非同期 RSC に対応できます。
RSC From Scratch
RSC を実装するチュートリアルが React 公式から公開されています。
https://github.com/reactwg/server-components/discussions/5
これはただ RSC を作るというものではなく、JSX から始まり、コンポーネント、ルーティング、非同期コンポーネント、ナビゲーション、…と一から順に実装しながら、SSR と RSC の違いや、React の大まかな仕組みを学べるようになっています。やりましょう。
Frontend Weekly 2023-06-14
https://blog.ohirunewani.com/series/frontend-weekly/2023-06-14/