TypeScript中的类型系统非常强大。它为我们提供了类型安全。虽然深受喜爱,但如果我们不计划和设计我们的类型和接口,类型系统也会使我们的代码混乱。泛型避免代码重复并创建可重用的类型,这是我们编写简洁代码的重要部分。泛型是TypeScript的一个特性,它允许我们编写可重用的类型。请参见以下示例:typeAdd=(a:T,b:T)=>TconstaddNumbers:Add=(a,b)=>{returna+b}constaddStrings:Add=(a,b)=>{returna+b}把正确的类型放到Add的泛型中,可以用来描述两个数相加或者两个字符串的连接。不用为每个函数都写一个类型,我们只需要用泛型做一次。这不仅节省了我们的精力,而且还使我们的代码更清晰,更不容易出错。实用类型TypeScript原生提供了几种有用的实用类型来帮助我们执行一些常见的类型转换。这些实用程序类型在全球范围内可用,并且它们都使用泛型。以下7个是我经常使用的。1.PickPick将从Type中选择属性集Keys来创建一个新的类型。键可以是字符串文字或字符串文字的并集。Keys的值必须是Type的键,否则TypeScript编译器会报错。当您想要通过从具有许多属性的对象中选取某些属性来创建更轻的对象时,此实用程序类型特别有用。typeUser={name:stringage:numberaddress:stringoccupation:string}typeBasicUser=Pick//typeBasicUser={//name:string;//age:number;//}2.省略Omit与Pick相反。Keys没有说明要保留哪些属性,而是说明要省略的属性键集。当我们只想从对象中删除某些属性并保留其他属性时,这会更有用。typeUser={name:stringage:numberaddress:stringoccupation:string}typeBasicUser=Omit//typeBasicUser={//name:string;//age:number;//}3.PartialPartial构造一个所有类型属性都设置为可选的类型。这在我们为对象编写更新逻辑时非常有用。typeUser={name:stringage:numberaddress:stringoccupation:string}typePartialUser=Partial//typePartialUser={//name?:string;//age?:number;//address?:string;//occupation?:string;//}4.RequiredRequired与Partial相反。它构造一个需要所有属性的类型。它可用于确保类型上不存在可选属性。typePartialUser={name:stringage:numberaddress?:stringoccupation?:string}typeUser=Required//typeUser={//name:string;//age:number;//address:string;//occupation:string;//}5。ReadonlyReadonly构造一个类型,其类型的所有属性都设置为只读。重新赋新值TS会报错。typeUser={name:stringage:numberaddress:stringoccupation:string}typeReadOnlyUser=Readonlyconstuser:ReadOnlyUser={name:"小智",age:24,address:"厦门",occupation:"大举走向世界"}user.name="王大爷"//不能赋值给'name'因为它是只读属性.7.ReturnTypeReturnType从函数类型的返回类型构建类型。当我们处理来自外部库的函数类型并希望基于它们构建自定义类型时,它非常有用。importaxiosfrom'axios'typeResponse=R??eturnTypefunctioncallAPI():Response{returnaxios("url")}除了上面提到的,还有其他实用类型可以帮助我们编写更清晰的代码。可以在此处找到有关实用程序类型的TypeScript文档的链接。https://www.typescriptlang.org/docs/handbook/utility-types.html实用程序类型是TypeScript提供的一项非常有用的功能。开发人员应该利用它们来避免硬编码类型。想比你的同事更好吗?你要知道的就这些!~最后,我是耍玩志,我要去,下次见!作者:junong译者:FrontendXiaozhi来源:medium原文:https://medium.com/ng/7-utility-types-that-every-typescript-developer-should-know-788fe73421f1【编辑推荐】Whydoyou说MQ是互联网架构的解耦神器?普罗米修斯报警规则管理人社部最高法:“996”严重违法!取消“996”,贵公司提上日程了吗?Python硬上C语言,会怎样?CNNIC:我国已成为6G专利申请主要来源国