当前位置: 首页 > 科技观察

15种最常见的TypeScript实用程序类型

时间:2023-03-13 04:52:57 科技观察

为了方便TypeScript用户,TypeScript开发团队为我们提供了许多有用的内置实用程序类型。有了这些实用类型,我们可以很方便地转换类型、提取类型、排除类型,或者获取函数的参数类型或返回值类型。在这篇文章中,我从TypeScript内置的实用类型中挑选了15个非常有用的类型,并以图片的形式介绍了它们的用法和内部工作原理。看完这篇文章,相信你能真正掌握这些内置类型。实用程序类型的使用。1.Partial构造一个Type的所有属性都设置为optional的类型。/***使T中的所有属性都是可选的。*typescript/lib/lib.es5.d.ts*/typePartial={[PinkeyofT]?:T[P];};2.Required构造一个类型,该类型由设置为requiredType的所有属性组成,与part相反。/***使T中的所有属性成为必需的。*typescript/lib/lib.es5.d.ts*/typeRequired={[PinkeyofT]-?:T[P];};3.Readonly构造一个类型,其中Type的所有属性都设置为只读,这意味着构造类型的属性不能被重新分配。/***将T中的所有属性设置为只读。*typescript/lib/lib.es5.d.ts*/typeReadonly={readonly[PinkeyofT]:T[P];};4.Record构造一个对象类型,其属性keys是Keys,其属性值为Type,此实用程序可用于将一种类型的属性映射到另一种类型。/***构造一个具有类型T的一组属性K的类型。*typescript/lib/lib.es5.d.ts*/typeRecord={[PinK]:T;};5。Exclude通过从UnionType中排除所有可分配给ExcludedMembers的联合成员来构造一个类型。/***从T中排除那些可分配给U的类型。*typescript/lib/lib.es5.d.ts*/typeExclude=TextendsU?从不:T;6。Extract通过从Type中提取所有可分配给Union的联合成员来构造一个类型。/***从T中提取那些可分配给U的类型。*typescript/lib/lib.es5.d.ts*/typeExtract=TextendsU?T:从不;7。Pick通过从Type中选择一组属性键(字符串文字或字符串文字的并集)来构造一个类型。/***从T中选择一组属性,其键在联合K中。*typescript/lib/lib.es5.d.ts*/typePick={[PinK]:T[P];};8.Omit通过从Type中选择所有属性然后删除Keys(字符串文字或字符串文字的并集)来构造类型。/***构造一个具有T属性的类型,但*类型K中的属性除外。*typescript/lib/lib.es5.d.ts*/typeOmit=Pick>;9.NonNullable通过从Type中排除null和undefined来构造一个类型。/***从T中排除null和undefined。*typescript/lib/lib.es5.d.ts*/typeNonNullable=Textendsnull|不明确的?从不:T;10。ParametersfromfunctiontypeType参数中使用的类型构造元组类型。/***获取元组中函数类型的参数。*typescript/lib/lib.es5.d.ts*/typeParametersany>=Textends(...args:inferP)=>any?P:从不;11.ReturnType构造一个由函数Type的返回类型组成的类型。/***获取函数类型的返回类型。*typescript/lib/lib.es5.d.ts*/typeReturnTypeany>=Textends(...args:any)=>inferR?R:任何;12.Uppercase将字符串文字类型转换为大写。13.Lowercase将字符串文字类型转换为小写。14.Uppercase将字符串文字类型的第一个字符转换为大写。15.Uncapitalize将字符串文字类型的第一个字符转换为小写。除了上述这些实用类型外,还有一些其他常用的TypeScript内置实用类型,如下所示:ConstructorParameters:从构造函数类型的类型构造一个元组或数组类型。它产生一个包含所有参数类型的元组类型(如果Type不是函数,则从不产生)。InstanceType:构造一个由Type中构造函数的实例类型组成的类型。ThisParameterType:为函数类型提取此参数的类型,如果函数类型没有此参数则为未知。本文中描述的实用程序类型在内部使用有关映射类型、条件类型和推断类型推断的知识。如果你不熟悉映射类型和条件类型,我会在后面继续分享这方面的一些知识。