TypeScript4.7 型推論の改善

TypeScript 4.7が先週リリースされました。4.7をインストールすることで、前回紹介した機能などが使用できるようになります。
TypeScript4.7への更新は以下のコマンドで行うことができます。

コマンド
// npm
npm i -g typescript@4.7.2

//yarn 
yarn add typescript@4.7.2

型推論の改善

オブジェクトにおける関数の型推論の改善が行われました。
TypeScript4.7以前では以下のコードで型推論が行われるもの、行われないものがありました。

TypeScript
let func: <T>(foo: {
  produce: (n: string) => T;
  consume: (x: T) => void;
}) => void;

// 〇
func({
  produce: () => "hello",
  consume: (x) => x.toLowerCase(),
});

// 〇
func({
  produce: (n: string) => n,
  consume: (x) => x.toLowerCase(),
});

// ×
func({
  produce: (n) => n,
  consume: (x) => x.toLowerCase(), ← エラー
});
// ×
func({
  produce: function () {
    return "hello";
  },
  consume: (x) => x.toLowerCase(), ← エラー
});

// ×
func({
  produce() {
    return "hello";
  },
  consume: (x) => x.toLowerCase(), ← エラー
});

上二つのfuncは通りますが、下3つのfuncはxがunknownのため以下のエラーが表示されます。

しかし、4.7ではこのエラーとなっていた下3つのコードが通るようになりました。
これは、単純な引数の場合と同じように左から右に一貫して型の推論が行われるようになりました。

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA