Open2

Typescriptのちょっとわからない文法をまとめる

gaKnightgaKnight

使う機会が少なくて、「これなんだっけ?」みたいな文法をまとめる

gaKnightgaKnight

infer

inferを知る前にまずGenericsConditional Typesを知った方が良さそう

Conditional Types(またまとめる)

Typescript公式より

TypeScript 2.8 introduces conditional types which add the ability to express non-uniform type mappings. A conditional type selects one of two possible types based on a condition expressed as a type relationship

inferとは

Type inference in conditional typesというものでConditional Types の構文の中で型をキャプチャ(取得)する機能

異なるプロパティをひとつに束ねる

type Value<T> = T extends () => Promise<infer U> ? U : never;
type Fetch<T> = () => Promise<Value<T>>;

-> <T> に付与される型の情報から Promise の持つ値が推論される

参考

https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html
https://qiita.com/ringtail003/items/733aff32ddad7d4fda90
https://zenn.dev/brachio_takumi/articles/464106a6a80eca8ab919