はじめに
2024年3月にTypeScript5.4がリリースされました。
その中で、NoInferという新しい機能が追加され、
これが便利だったので紹介します。
NoInferとは?
When calling generic functions, TypeScript is able to infer type arguments from whatever you pass in.
ref:https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/
ジェネリック関数で引数の型を元に、他の引数の型を推論できるものです。
既存の型のパラメータによって制限できるというものです。
5.3以前 | 5.4 |
---|---|
実際のコード
declare function doBallGame<T extends string>(a: T[], b: NoInfer<T>): void
doBallGame(['baseball', 'soccer'], 'judo')
//下記のようなエラーが出力される
// 型 '"judo"' の引数を型 '"baseball" | "soccer"' のパラメーターに割り当てることはできません。
今回でいくと、doBallGame
の第1引数の、[baseball,soccer]から 第2引数が
baseballか
soccer`のどちらかであることを推論してくれます。
これにより、judo
を含む可能性がある型推論を防ぐことができます。
以下の手順でts5.4はインストールできるのでぜひ試してください
npm install -D typescript@5.4
参照