当前位置: 首页 > news >正文

扬州网站建设哪家公司好怎么免费做一个网站

扬州网站建设哪家公司好,怎么免费做一个网站,中投中原建设有限公司网站,英文响应式网站建设我们可以使用 TypeScript 中的条件类型来根据逻辑定义某些类型#xff0c;就像是在编写代码那样。它采用的语法和我们在 JavaScript 中熟悉的三元运算符很像#xff1a;condition ? ifConditionTrue : ifConditionFalse。我们来看看他是怎么工作的。 TypeScript 的条件类型…我们可以使用 TypeScript 中的条件类型来根据逻辑定义某些类型就像是在编写代码那样。它采用的语法和我们在 JavaScript 中熟悉的三元运算符很像condition ? ifConditionTrue : ifConditionFalse。我们来看看他是怎么工作的。 TypeScript 的条件类型使用方式 假设我们有一个值这个值可以表示用户的出生日期或者年龄。 如果是出生日期那他的类型应该是 string。 如果是年龄那他的类型是 number。 我们来定义这三种类型。 type Dob string; type Age number; type UserAgeInformationT T extends number ? number : string;Dob 和 Age 不需要多解释我们来解释一下 UserAgeInformation。它接受一个泛型可以是任何类型。如果 T extends number 为 true就意味着传入的类型是 number 类型我们就把 UserAgeInformation 设置为 number 类型。否则的话就设置为 string 类型。我们在使用的时候可以这样 let userAge:UserAgeInformationAge 100; let userDob:UserAgeInformationDob 12/12/1945;条件类型和 keyof 组合 除了上面介绍的用法我们还可以通过检查是否扩展了一个对象来更进一步。比如假设我们的客户有两种类型Horse 和 User。两种类型的客户都有 age、name 两个字段。User 类型的客户还有一个 address 字段它表示了详细的地址。Horse 类型的客户有 location 两个字段它只是表示一个大概的位置。我们来定义这几种类型 type User {age: number,name: string,address: string }type Horse {age: number,name: string }type UserAddress {addressLine1: string,city: string,country: string, }type HorseAddress {location: farm | savanna | field | other }在未来我们还可能会有其他类型的客户所以我们可以通过检查 T 是否具有 address 属性如果有我们使用 UserAddress 类型否则使用 HorseAddress 类型。 type AddressComponentsT T extends { address: string } ? UserAddress : HorseAddresslet userAddress:AddressComponentsUser {addressLine1: 123 Fake Street,city: Boston,country: USA }let horseAddress:AddressComponentsHorse {location: farm }T extends { address: string } 的含义是检查 T 是否具有 address 属性。 在条件返回中使用 T 在三元表达式的条件返回中我们也可以使用 T。 比如下面的例子 type User {age: number,name: string,address: string }type Horse {age: number,name: string }type UserTypeT T extends { address: string } ? T : Horselet myUser: UserTypeUser {age: 104, name: John Doe,address: 123 Fake Street }T 被定义为 User当我们调用 UserType 时myUser 的类型就是 User并且需要具有这种类型中所定义的字段。 在类型输出中使用 T 时的联合类型 如果我们在这里传递一个联合类型 type UserTypeT T extends { address: string } ? T : stringlet myUser: UserTypeUser | Horse {age: 104, name: John Doe,address: 123 Fake Street }myUser 的类型会变成是 User|string因为 User 通过了条件检测但是 Horse 没有通过所以它的类型是字符串。 如果我们以某种方式修改 T比如把它设置为数组。所有 T 的值都会被单独修改。 type User {age?: number,name: string,address?: string } type Horse {age?: number,name: string } // 如果 T 包含类型是 string 的 name 属性就会返回 T[] type UserTypeT T extends { name: string } ? T[] : never;// myUser 的类型是 User[]|Horse[]因为 User 和 Horse 都具有 name 属性 let myUser:UserTypeUser | Horse [{ name: John }, { name: Horse }]在这里我们已经简化了 User 和 Horse它们只留下了必须需要的 name 字段。在条件类型中两种类型都包含了 name。所以两者都会返回 true并且返回的类型是 T[]由于两者都返回 true所以 myUser 的类型是 User[]|Horse[]所以我们可以简单地提供一个包含 name 属性的对象数组。这种行为通常很好但是在某些情况下我们希望返回一个数组。在这种情况下如果我们想避免这样分布类型可以在 周围添加 { name: string }。 type User {age?: number,name: string,address?: string } type Horse {age?: number,name: string } // 我们避免分布类型因为 T 和 { name: string} 都在方括号中 type UserTypeT [T] extends [{ name: string }] ? T[] : never;// 这样现在的类型不同了它是 (User|Horse)[] let myUser:UserTypeUser | Horse [{ name: John }, { name: Horse }]通过使用方括号我们的类型已经转为 (User|Horse)[]而不是 User[]|Horse[]。这在某些特殊的场景中很有用。但是条件类型会增加复杂性不可以滥用。 使用条件类型推断类型 我们也可以在使用条件时使用 infer 关键字。假设我们有两种类型一种用于数字数组另一种用于字符串数组。在这个例子中infer 将会推断数组中每个项目的类型并返回正确的类型 type StringArray string[] type NumberArray number[] type MixedArray number[] | string[] type ArrayTypeT T extends Arrayinfer Item ? Item: never// 因为 NumberArray 中项目的类型是 number所以 myItem1 是 number 类型 let myItem1: ArrayTypeNumberArray 45 // 因为 StringArray 中项目的类型是 string所以 myItem2 是 string 类型 let myItem2: ArrayTypeStringArray string // 因为 MixedArray 中项目的类型是 number|string所以 myItem3 是 number|string 类型 let myItem3: ArrayTypeMixedArray string我们在条件类型中定义了一个新的参数 Item它是 extends Array 中的子项 T。但是我们必须传入数组它才会有效因为我们使用的是 Array。如果 T 不是数组那么 ArrayType 的类型将会是 never。 总结 如果你刚接触到 TypeScript 的条件类型你可能会觉得很疑惑。但是它解决了某些特定情况下编写类型比较复杂的一种解决方式。如果你在某个项目中看到它或者简化你想你的项目代码它或许很有用。
http://www.hkea.cn/news/14363651/

相关文章:

  • 网站开发技术 下载注册公司100万实缴多少
  • 搜索品牌价值的网站建设公司网站需要准备什么科目
  • 个人做企业 网站佛山附近做网站的公司
  • 南宁广告公司网站建设无锡微信公众号开发
  • 青岛高品质网站建设ui设计师mike个人网站
  • 万博法务网站建设项目在线视频网站a做免费下载
  • 360中小网站建设yandx引擎入口
  • 江西网站备案流程资料库网站开发报价
  • 银川网站设计公司如何做网络营销推广唯选一 诺
  • 深圳网站建站公司wordpress语言切换 seo
  • 响应式网站源码.netapp运营流程
  • 南宁市企业网站建设青岛网站建设seo
  • 使用h5做的学习网站源码企业网站建设分为那几个阶段
  • 哪些购物网站有做拼团活动没有足够的权限卸载2345网址导航
  • 怎么做淘宝客网站备案多说wordpress
  • 永顺网站建设美康优选网站怎么做的
  • 企业网站群建设的原因重庆微网站建设哪家好
  • 中江建设银行网站广州公共资源交易
  • 做一个购物网站济宁seo优化公司
  • 网站主机空间价格浏览器老是跳到购物app
  • 免费获客软件汕头seo外包
  • 都有哪些网站可以做推广网站种类有哪些
  • 外贸网站用什么空间保定百度seo公司
  • 宜昌网站建设市场邯郸做企业网站设计的公司
  • 网站二级目录 修改路径优秀设计平台
  • 企业网站备案信息网上商城什么意思
  • 外包做网站哪家好某种网站怎么找
  • 化妆品设计网站有没有免费的分销软件
  • 网站开发入门习题设计房屋立体图的软件
  • 网文封面制作网站山东城乡建设厅网站