发布网友 发布时间:2022-11-10 04:22
共1个回答
热心网友 时间:2023-11-23 21:48
学习TypeScript的过程中发现对某些UtilityTypes不是很理解,就重新在文档上系统学习了一遍,TypeScript提供了几种实用工具类型来促进常见的类型转换,这些实用程序是全局可用的。
UtilityTypes文档链接: https://www.typescriptlang.org/docs/handbook/utility-types.html
将泛型传入的T中所有属性转换为可选属性,返回的类型可以是T的任意子集。
源码:
keyof T 获取T中的key值组合,这里的例子T是Person相当于是'name' | 'age', in关键字遍历keyof返回值为新的类型新增了name和age属性,?操作符将所有属性定义为可选属性。
将泛型传入的T中所有属性转换为必须属性,和Partial类型相反。
源码:
和Partial相反,通过-?操作符将所以可选属性去除。
将泛型传入的T中所有属性转换为只读属性。
源码:
使用readonly关键字将所有属性变成只读属性。
创建一个对象类型,使对象的键key的类型为传入的泛型K,使对象的值value的类型为传入的泛型T。
源码:
通过传入的泛型T中选择一组属性K(字符串字面值或字符串字面值的联合)来构造类型。
源码:
规定了泛型K必须是泛型T中key的子集,上面例子中K必须是‘title’|‘description’|‘completed’
通过传入的泛型T中选择一组属性K并删除其他属性,和Pick相反。
源码:
结合了Pick和Exclude,使用Exclude排除掉T中除了包含K的所有属性,使用Pick重新创建一个新的类型。
从函数类型T的形参中使用的类型构造元组类型,可以用来获取一个函数里面参数的类型,不过注意是用元组的形式获取。
源码:
获取函数类型T返回值的类型。
源码: