3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

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
f04395a8-3870-7405-6faa-f989690bebc1.png 3fec28d3-90bf-3362-36a8-14dd68c0182a.png

実際のコード

declare function doBallGame<T extends string>(a: T[], b: NoInfer<T>): void
doBallGame(['baseball', 'soccer'], 'judo')

//下記のようなエラーが出力される
// 型 '"judo"' の引数を型 '"baseball" | "soccer"' のパラメーターに割り当てることはできません。

今回でいくと、doBallGameの第1引数の、[baseball,soccer]から 第2引数がbaseballsoccer`のどちらかであることを推論してくれます。

これにより、judoを含む可能性がある型推論を防ぐことができます。

以下の手順でts5.4はインストールできるのでぜひ試してください

npm install -D typescript@5.4

参照

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?