3-2. 型の部分抽出 次の「A2」の様な補助型を利用すると、第二引数型が抽出できます。 64 64 64 type A2 = T extends (a1: any, a2: infer I) => any ? I : never type T = typeof addTodo type U = A2 type T = (state: State, todo: Todo) => void type U = Todo inferred
3-2. 型の部分抽出 ここが「Type Inference in conditional types」です。 65 65 65 type A2 = T extends (a1: any, a2: infer I) => any ? I : never type T = typeof addTodo type U = A2 type T = (state: State, todo: Todo) => void type U = Todo inferred
3-2. 型の部分抽出 typeof 型クエリーを使うことで、実装から型を抽出できます。 66 66 66 type A2 = T extends (a1: any, a2: infer I) => any ? I : never type T = typeof addTodo type U = A2 type T = (state: State, todo: Todo) => void type U = Todo inferred
3-2. 型の部分抽出 「addTodo」という、さきほどの関数定義を参照しています。 67 67 67 type A2 = T extends (a1: any, a2: infer I) => any ? I : never type T = typeof addTodo type U = A2 type T = (state: State, todo: Todo) => void type U = Todo inferred
3-2. 型の部分抽出 それは新しい型として定義され、参照を継続します。 68 68 68 type A2 = T extends (a1: any, a2: infer I) => any ? I : never type T = typeof addTodo type U = A2 type T = (state: State, todo: Todo) => void type U = Todo inferred