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

本地集团网站建设咨询公司排行榜

本地集团网站建设,咨询公司排行榜,专注wordpress开发,网站推广建议类型工具 是ts提供的一些内置的工具#xff0c;用来更方便地处理各种类型#xff0c;以及生成新的类型#xff0c;可以直接使用。也就是对类型的操作。 1. 字符串类型工具 ts 内置了四个字符串类型工具#xff0c;专门用来操作字符串类型。这四个工具类型都定义在 ts 自…类型工具 是ts提供的一些内置的工具用来更方便地处理各种类型以及生成新的类型可以直接使用。也就是对类型的操作。 1. 字符串类型工具 ts 内置了四个字符串类型工具专门用来操作字符串类型。这四个工具类型都定义在 ts 自带的.d.ts文件里面。 它们的实现都是在底层调用 JavaScript 引擎提供 JavaScript 字符操作方法。 1. UppercaseStringType UppercaseStringType将字符串类型的每个字符转为大写。 type A hello; // HELLO type B UppercaseA;2. LowercaseStringType LowercaseStringType将字符串的每个字符转为小写。 type A HELLO; // hello type B LowercaseA;3. CapitalizeStringType CapitalizeStringType将字符串的第一个字符转为大写。 type A hello;// Hello type B CapitalizeA;4. UncapitalizeStringType UncapitalizeStringType 将字符串的第一个字符转为小写。 type A HELLO;// hELLO type B UncapitalizeA;2. AwaitedType AwaitedType用来取出 Promise 的返回值类型适合用在描述then()方法和 await 命令的参数类型。 // string type A AwaitedPromisestring; 上面示例中AwaitedType会返回 Promise 的返回值类型string。 它也可以返回多重 Promise 的返回值类型。 // number type B AwaitedPromisePromisenumber; 如果它的类型参数不是 Promise 类型那么就会原样返回。 // number | boolean type C Awaitedboolean | Promisenumber; 上面示例中类型参数是一个联合类型其中的boolean会原样返回所以最终返回的是number|boolean。 AwaitedType的实现如下。 type AwaitedT T extends null | undefined ? T :T extends object {then(onfulfilled: infer F,...args: infer _): any;} ? F extends (value: infer V,...args: infer _) any ? Awaited... : never:T; 3. ConstructorParametersType ConstructorParametersType提取构造方法Type的参数类型组成一个元组类型返回。 type T1 ConstructorParametersnew (x: string, y: number) object ; // [x: string, y: number]type T2 ConstructorParametersnew (x?: string) object ; // [x?: string | undefined] 它可以返回一些内置构造方法的参数类型。 type T1 ConstructorParametersErrorConstructor ; // [message?: string]type T2 ConstructorParametersFunctionConstructor ; // string[]type T3 ConstructorParametersRegExpConstructor ; // [pattern:string|RegExp, flags?:string] 如果参数类型不是构造方法就会报错。 type T1 ConstructorParametersstring; // 报错type T2 ConstructorParametersFunction; // 报错 any类型和never类型是两个特殊值分别返回unknown[]和never。 type T1 ConstructorParametersany; // unknown[]type T2 ConstructorParametersnever; // never ConstructorParametersType的实现如下。 type ConstructorParametersT extends abstract new (...args: any) anyT extends abstract new (...args: infer P) any ? P : never 4. ExcludeUnionType, ExcludedMembers ExcludeUnionType, ExcludedMembers用来从联合类型UnionType里面删除某些类型ExcludedMembers组成一个新的类型返回。 type T1 Excludea|b|c, a; // b|c type T2 Excludea|b|c, a|b; // c type T3 Excludestring|(() void), Function; // string type T4 Excludestring | string[], any[]; // string type T5 Exclude(() void) | null, Function; // null type T6 Exclude200 | 400, 200 | 201; // 400 type T7 Excludenumber, boolean; // number ExcludeUnionType, ExcludedMembers的实现如下。 type ExcludeT, U T extends U ? never : T; 上面代码中等号右边的部分表示先判断T是否兼容U如果是的就返回never类型否则返回当前类型T。由于never类型是任何其他类型的子类型它跟其他类型组成联合类型时可以直接将never类型从联合类型中“消掉”因此ExcludeT, U就相当于删除兼容的类型剩下不兼容的类型。 5. ExtractType, Union ExtractUnionType, Union用来从联合类型UnionType之中提取指定类型Union组成一个新类型返回。它与ExcludeT, U正好相反。 type T1 Extracta|b|c, a; // a type T2 Extracta|b|c, a|b; // a|b type T3 Extracta|b|c, a|d; // a type T4 Extractstring | string[], any[]; // string[] type T5 Extract(() void) | null, Function; // () void type T6 Extract200 | 400, 200 | 201; // 200 如果参数类型Union不包含在联合类型UnionType之中则返回never类型。 type T Extractstring|number, boolean; // never ExtractUnionType, Union的实现如下。 type ExtractT, U T extends U ? T : never; 6. InstanceTypeType InstanceTypeType提取构造函数的返回值的类型即实例类型参数Type是一个构造函数等同于构造函数的ReturnTypeType。 type T InstanceTypenew () object ; // object 上面示例中类型参数是一个构造函数new () object返回值是该构造函数的实例类型object。 下面是一些例子。 type A InstanceTypeErrorConstructor; // Error type B InstanceTypeFunctionConstructor; // Function type C InstanceTypeRegExpConstructor; // RegExp 上面示例中InstanceTypeT的参数都是 TypeScript 内置的原生对象的构造函数类型InstanceTypeT的返回值就是这些构造函数的实例类型。 由于 Class 作为类型代表实例类型。要获取它的构造方法必须把它当成值然后用typeof运算符获取它的构造方法类型。 class C {x 0;y 0; }type T InstanceTypetypeof C; // C 上面示例中typeof C是C的构造方法类型然后 InstanceType 就能获得实例类型即C本身。 如果类型参数不是构造方法就会报错。 type T1 InstanceTypestring; // 报错type T2 InstanceTypeFunction; // 报错 如果类型参数是any或never两个特殊值分别返回any和never。 type T1 InstanceTypeany; // anytype T2 InstanceTypenever; // never InstanceTypeType的实现如下。 type InstanceTypeT extends abstract new (...args:any) anyT extends abstract new (...args: any) infer R ? R :any; 7. NonNullableType NonNullableType用来从联合类型Type删除null类型和undefined类型组成一个新类型返回也就是返回Type的非空类型版本。 // string|number type T1 NonNullablestring|number|undefined;// string[] type T2 NonNullablestring[]|null|undefined;type T3 NonNullableboolean; // boolean type T4 NonNullablenumber|null; // number type T5 NonNullablestring|undefined; // string type T6 NonNullablenull|undefined; // never NonNullableType的实现如下。 type NonNullableT T {} 上面代码中T {}等同于求T Object的交叉类型。由于 TypeScript 的非空值都属于Object的子类型所以会返回自身而null和undefined不属于Object会返回never类型。 8. OmitType, Keys OmitType, Keys用来从对象类型Type中删除指定的属性Keys组成一个新的对象类型返回。 interface A {x: number;y: number; }type T1 OmitA, x; // { y: number } type T2 OmitA, y; // { x: number } type T3 OmitA, x | y; // { } 上面示例中OmitType, Keys从对象类型A里面删除指定属性返回剩下的属性。 指定删除的键名Keys可以是对象类型Type中不存在的属性但必须兼容string|number|symbol。 interface A {x: number;y: number; }type T OmitA, z; // { x: number; y: number } 上面示例中对象类型A中不存在属性z所以就原样返回了。 OmitType, Keys的实现如下。 type OmitT, K extends keyof any PickT, Excludekeyof T, K; 9. OmitThisParameterType OmitThisParameterType从函数类型中移除 this 参数。 function toHex(this: Number) {return this.toString(16); }type T OmitThisParametertypeof toHex; // () string 上面示例中OmitThisParameterT给出了函数toHex()的类型并将其中的this参数删除。 如果函数没有 this 参数则返回原始函数类型。 OmitThisParameterType的实现如下。 type OmitThisParameterT unknown extends ThisParameterTypeT ? T :T extends (...args: infer A) infer R ?(...args: A) R : T; 10. ParametersType ParametersType从函数类型Type里面提取参数类型组成一个元组返回。 type T1 Parameters() string; // []type T2 Parameters(s:string) void; // [s:string]type T3 ParametersT(arg: T) T; // [arg: unknown]type T4 Parameters(x:{ a: number; b: string }) void ; // [x: { a: number, b: string }]type T5 Parameters(a:number, b:number) number ; // [a:number, b:number] 上面示例中ParametersType的返回值会包括函数的参数名这一点需要注意。 如果参数类型Type不是带有参数的函数形式会报错。 // 报错 type T1 Parametersstring;// 报错 type T2 ParametersFunction; 由于any和never是两个特殊值会返回unknown[]和never。 type T1 Parametersany; // unknown[]type T2 Parametersnever; // never ParametersType主要用于从外部模块提供的函数类型中获取参数类型。 interface SecretName {first: string;last: string; }interface SecretSanta {name: SecretName;gift: string; }export function getGift(name: SecretName,gift: string ): SecretSanta {// ... } 上面示例中模块只输出了函数getGift()没有输出参数SecretName和返回值SecretSanta。这时就可以通过ParametersT和ReturnTypeT拿到这两个接口类型。 type ParaT Parameterstypeof getGift[0]; // SecretNametype ReturnT ReturnTypetypeof getGift; // SecretSanta ParametersType的实现如下。 type ParametersT extends (...args: any) any T extends (...args: infer P) any ? P : never 11. PartialType PartialType返回一个新类型将参数类型Type的所有属性变为可选属性。 interface A {x: number;y: number; }type T PartialA; // { x?: number; y?: number; } PartialType的实现如下。 type PartialT {[P in keyof T]?: T[P]; }; 12. PickType, Keys PickType, Keys返回一个新的对象类型第一个参数Type是一个对象类型第二个参数Keys是Type里面被选定的键名。 interface A {x: number;y: number; }type T1 PickA, x; // { x: number } type T2 PickA, y; // { y: number } type T3 PickA, x|y; // { x: number; y: number } 上面示例中PickType, Keys会从对象类型A里面挑出指定的键名组成一个新的对象类型。 指定的键名Keys必须是对象键名Type里面已经存在的键名否则会报错。 interface A {x: number;y: number; }type T PickA, z; // 报错 上面示例中对象类型A不存在键名z所以报错了。 PickType, Keys的实现如下。 type PickT, K extends keyof T {[P in K]: T[P]; }; 13. ReadonlyType ReadonlyType返回一个新类型将参数类型Type的所有属性变为只读属性。 interface A {x: number;y?: number; }// { readonly x: number; readonly y?: number; } type T ReadonlyA; 上面示例中y是可选属性ReadonlyType不会改变这一点只会让y变成只读。 ReadonlyType的实现如下。 type ReadonlyT {readonly [P in keyof T]: T[P]; }; 我们可以自定义类型工具MutableType将参数类型的所有属性变成可变属性。 type MutableT {-readonly [P in keyof T]: T[P]; }; 上面代码中-readonly表示去除属性的只读标志。 相应地readonly就表示增加只读标志等同于readonly。因此ReadOnlyType的实现也可以写成下面这样。 type ReadonlyT {readonly [P in keyof T]: T[P]; }; ReadonlyType可以与PartialType结合使用将所有属性变成只读的可选属性。 interface Person {name: string;age: number; }const worker: ReadonlyPartialPerson { name: 张三 };worker.name 李四; // 报错 14. RecordKeys, Type RecordKeys, Type返回一个对象类型参数Keys用作键名参数Type用作键值类型。 // { a: number } type T Recorda, number; 上面示例中RecordKeys, Type的第一个参数a用作对象的键名第二个参数number是a的键值类型。 参数Keys可以是联合类型这时会依次展开为多个键。 // { a: number, b: number } type T Recorda|b, number; 上面示例中第一个参数是联合类型a|b展开成两个键名a和b。 如果参数Type是联合类型就表明键值是联合类型。 // { a: number|string } type T Recorda, number|string; 参数Keys的类型必须兼容string|number|symbol否则不能用作键名会报错。 RecordKeys, Type的实现如下。 type RecordK extends string|number|symbol, T { [P in K]: T; } 15. RequiredType RequiredType返回一个新类型将参数类型Type的所有属性变为必选属性。它与PartialType的作用正好相反。 interface A {x?: number;y: number; }type T RequiredA; // { x: number; y: number; } RequiredType的实现如下。 type RequiredT {[P in keyof T]-?: T[P]; }; 上面代码中符号-?表示去除可选属性的“问号”使其变成必选属性。 相对应地符号?表示增加可选属性的“问号”等同于?。因此前面的PartialType的定义也可以写成下面这样。 type PartialT {[P in keyof T]?: T[P]; }; 16. ReadonlyArrayType ReadonlyArrayType用来生成一个只读数组类型类型参数Type表示数组成员的类型。 const values: ReadonlyArraystring [a, b, c];values[0] x; // 报错 values.push(x); // 报错 values.pop(); // 报错 values.splice(1, 1); // 报错 上面示例中变量values的类型是一个只读数组所以修改成员会报错并且那些会修改源数组的方法push()、pop()、splice()等都不存在。 ReadonlyArrayType的实现如下。 interface ReadonlyArrayT {readonly length: number;readonly [n: number]: T;// ... } 17. ReturnTypeType ReturnTypeType提取函数类型Type的返回值类型作为一个新类型返回。 type T1 ReturnType() string; // stringtype T2 ReturnType() {a: string; b: number }; // { a: string; b: number }type T3 ReturnType(s:string) void; // voidtype T4 ReturnType() () any[]; // () any[]type T5 ReturnTypetypeof Math.random; // numbertype T6 ReturnTypetypeof Array.isArray; // boolean 如果参数类型是泛型函数返回值取决于泛型类型。如果泛型不带有限制条件就会返回unknown。 type T1 ReturnTypeT() T; // unknowntype T2 ReturnTypeT extends U, U extends number[]() T ; // number[] 如果类型不是函数会报错。 type T1 ReturnTypeboolean; // 报错type T2 ReturnTypeFunction; // 报错 any和never是两个特殊值分别返回any和never。 type T1 ReturnTypeany; // anytype T2 ReturnTypenever; // never ReturnTypeType的实现如下。 type ReturnTypeT extends (...args: any) anyT extends (...args: any) infer R ? R : any; 18. ThisParameterTypeType ThisParameterTypeType提取函数类型中this参数的类型。 function toHex(this: Number) {return this.toString(16); }type T ThisParameterTypetypeof toHex; // number 如果函数没有this参数则返回unknown。 ThisParameterTypeType的实现如下。 type ThisParameterTypeT T extends (this: infer U,...args: never) any ? U : unknown; 19. ThisTypeType ThisTypeType不返回类型只用来跟其他类型组成交叉类型用来提示 TypeScript 其他类型里面的this的类型。 interface HelperThisValue {logError: (error:string) void; }let helperFunctions:{ [name: string]: Function } ThisTypeHelperThisValue{hello: function() {this.logError(Error: Something wrong!); // 正确this.update(); // 报错} } 上面示例中变量helperFunctions的类型是一个正常的对象类型与ThisTypeHelperThisValue组成的交叉类型。 这里的ThisType的作用是提示 TypeScript变量helperFunctions的this应该满足HelperThisValue的条件。所以this.logError()可以正确调用而this.update()会报错因为HelperThisValue里面没有这个方法。 注意使用这个类型工具时必须打开noImplicitThis设置。 下面是另一个例子。 let obj: ThisType{ x: number } { getX: () number };obj {getX() {return this.x this.y; // 报错}, }; 上面示例中getX()里面的this.y会报错因为根据ThisType{ x: number }这个对象的this不包含属性y。 ThisTypeType的实现就是一个空接口。 interface ThisTypeT { }
http://www.w-s-a.com/news/440970/

相关文章:

  • 饮食网站模板建网站中企动力优
  • 郑州 制造 网站东平企业建站公司
  • 天津设计师网站大全展示型网站搭建
  • 南宁网站建设 传导网站开发平台开发公司
  • 网站建设好处上海建设工程网站
  • 黑河哈尔滨网站建设太原网站制作定制开发
  • 建站做网站香河住房与建设局网站
  • 如何制造一个网站域名分类网站
  • 解析视频的网站怎么做凡科网快图
  • 企业网站优化问题接单app平台有哪些
  • 怎么做网站后缀识别符号才不会变什么是电子商务网站建设
  • 中山 五金 骏域网站建设专家专门用来制作网页的软件是什么
  • 怎么做刷东西的网站数据分析软件工具有哪些
  • 官方购物网站正品交易网站域名
  • lol网站建设seo 网站太小
  • 网站建设销售职责手机网站制作软件
  • 福州百度企业网站seo如何在电脑上登录wordpress
  • 开发区全力做好网站建设网络广告营销成功案例
  • 114网站建设高并发系统架构
  • php网站打开一片空白wordpress中文广告插件下载
  • 怎样建自己的网站免费的百度关键词排名点击
  • 医院网站建设的特点怎么查看网站百度快照
  • 网站 如何备案一般网站开发公司
  • 做网站的公司 贵阳郑州新像素ui设计培训收费
  • 温州网站建设公司电话给个免费的网址
  • 个人做电子商务网站备案软考高级
  • 淘宝客需要自己做网站吗四川遂宁做网站的公司
  • 编写网站策划书缘魁上海网站建设
  • 梧州外贸网站推广设计wordpress 上传 七牛
  • 增加网站备案千灯做网站