TypeScript 5.1
TypeScript 5.1 がリリース。
返り値が undefined な関数で 暗黙的な return が許容されるように変更
次のようなコードが許容されるようになりました。
tsx
const f = (): undefined => {
// no returns
};返り値の型を void にすれば良いだけでは?とも思いますが、利用しているライブラリなどが undefined の返り値を要求しているケースで記述が楽になります。
tsx
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 に対応できます。