編集

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 に対応できます。

#参考文献

編集