作者:junong译者:前端小智来源:medium有梦想,有干货,微信搜索【大千世界】关注这位凌晨还在洗碗的洗碗智慧。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,里面有完整的测试站点、资料和我的一线厂商访谈系列文章。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<用户,"name"|"age">//typeBasicUser={//name:string;//age:number;//}2。OmitOmit与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;//职业?:字符串;//}4.RequiredRequired与Partial相反。它构造一个需要所有属性的类型。它可用于确保类型上不存在可选属性。typePartialUser={name:stringage:numberaddress?:stringoccupation?:string}typeUser=Required//typeUser={//name:string;//age:number;//address:string;//职业:字符串;//}5.ReadonlyReadonly构造一个类型,该类型的所有属性都设置为只读。重新赋新值TS会报错。typeUser={name:stringage:numberaddress:stringoccupation:string}typeReadOnlyUser=Readonlyconstuser:ReadOnlyUser={name:"小智",age:24,address:"厦门",occupation:"大千World"}user.name="WangDaye"//不能赋值给'name'因为它是一个只读属性。7.ReturnTypeReturnType从函数类型的返回类型构建类型。当我们处理来自外部库的函数类型并希望基于它们构建自定义类型时,它非常有用。importaxiosfrom'axios'typeResponse=ReturnTypefunctioncallAPI():Response{returnaxios("url")}除了上面提到的,还有其他实用类型可以帮助我们编写更简洁的代码。可以在此处找到有关实用程序类型的TypeScript文档的链接。https://www.typescriptlang.or...实用类型是TypeScript提供的一个非常有用的功能。开发人员应该利用它们来避免硬编码类型。想要超越你的同事?这是你需要知道的!~完了,我是玩玩志,准备出发了,下次见!原文:https://medium.com/ng/7-utili...代码部署后可能存在的bug无法实时获知。之后为了解决这些bug,花费了大量的时间在日志调试上。在这里顺便给大家推荐一个好用的BUG监控工具Fundebug。原文:https://learue.co/2020/01/a-v...交流有梦想,有干货,微信搜索【大千世界】关注这位凌晨还在洗碗的洗碗智慧。本文GitHubhttps://github.com/qq44924588...已收录,有完整的测试站点、资料和我的一线厂商访谈系列文章。