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/
作者
hrdtbs
公開日
2023-06-14
ライセンス
CC BY-NC-SA 4.0