infer 类型推导
ts的所有内置类型都是基于 infer和 extends+分发、in keyof 来实现的
extends: 约束infer: 推导typeof: 将值转成类型
所有的内置类型都是基于infer来实现的 infer是固定写法.
例如: 想要推导函数的返回值类型, 可以用内置类型ReturnType<T>这个来实现.
function getSchool(name:string,age:name,address:string){return {name, age, address}}
可以使用ReturnType<T>来动态获取返回值类型:
type GetSchoolReturn = ReturnType<typeof getSchool>
此时的GetSchoolReturn就是
{ name:string, age:name, address:string }
将元祖转化成联合类型 怎么做?
[string, number, boolean] => string | number | boolea
type typingArr = [string, number, boolean]type ToUnion = Transfer<typingArr>type Transfer<T> = T extends Array <infer A> ? A : never
联合类型转化成元祖?
string | number | boolea => [string, number, boolean]
// TODO
