北京时间8月3日晚,“股神”巴菲特旗下伯克希尔·哈撒韦公司公布2024年度第二季度财务报告。根据报告,该公司在第二季度将其持有的苹果公司股份从第一季度...
2024-09-19 906 但斌回应巴菲特减持近半苹果股份我们没有跟随减持的想法
T extends U ? X : Y - 如果T是U的子集,则返回X类型否则返回Y类型
type Other = 'a' | 'b';type Merge = T extends "x" ? T : Other;// 当泛型传入的是x时,则返回的是x类型,当泛型传入的是y类型时,则返回是Other类型,所以联合一起就是"x" | "a" | "b";type Values = Merge<"x" | "y">;// type Values = "x" | "a" | "b"// 联合类型里面的每一个值都要去匹配type Merge = T extends U ? nerer : T;type Values1 = Merge<"x" | "y" | "z","x">;// type Values1 = nerer Merge// type Values1 = "y" Merge// type Values1 = "z" Merge// 所以 type Values1 = 'y' | 'z'type Merge = T extends {a:string,b:number} ? T : never;// 只管传入的T里面符合{a:string,b:number}则返回T,否则返回nevertype Values1 = Merge<{a:string,b:number,c:boolean}>;// Values1 = {a:string,b:number,c:boolean};
infer - 推断extends的字句类型,infer为匹配时符合条件的类型
type Values = T extends (...args:any[]) => infer R ? R : T;// 当T是(...args:any[]) => R的返回值类型,则返回R类型,否则返回T类型type Values1 = Values<()=>number>;// type Values = number; infer推断T的返回值type Values = T extends (infer R)[] ? R : T;// R为数组元素类型 string[] R就为string number[] R为numbertype Values1 = Values;// infer推断数组类型// type Values = number;type Values = T extends {a:infer U,b:infer U} ? U : never;// infer 匹配传入的a的类型和b的类型type Values1 = Values<{a:number,b:number}>;// type Values1 = number;type Values2 = Values<{a:number,b:string}>;// type Values2 = number | string;type Values3 = Values<{a:number,b:string,c:boolean}>;// 匹配符合条件的项// type Values3 = number | string;type Values4 = Values<{c:boolean}>;// type Values4 = never;
ReturnType - 获取传入的T的返回值类型
type Values = ReturnType<()=>number>;// type Values = number;
keyof - 用于获取某种类型的所有键,其返回类型是联合类型
interface B { id: number; name: string; age: number;}type B1 = keyof B;// type B1 = "id" | "name" | "age"
Record<K,V> - V作为K的属性
type Methods = 'GET' | 'POST'type Types = Record<Methods,any>// type Types = {GET: any,POST: any}type test = { name:string, age:number}type Types = Record<string,test>// type Types = { [x:string]: {name:string,age:number}}
Partial - 属性转换为可选类型
type ITest = { name:string age:number}type Types = Partial<ITest>// type Types = {name?:string,age?:number}
Omit<I,'name'> - I里面删除name属性
type Itest = { name:string age:number}type Types=Omit<Itest,"name">// type Types = {age:number}
Required - 将T里面的属性全部转为必须属性
type Types = { name?:string age?:number}type Types1 = Required<Types>// type Types1 = {name:string,age:number}
Pick<T,属性> - 从T里面选取属性
type Types = { name:string, age:number}type Types1 = Pick<Types,'name'>// type Types1 = {name:string}
Readonly - 将T里面的属性转为readonly
type Types = { name:string, age:number}type Types1 = Readonly<Types>// type Types1 = { readonly name: string; readonly age: number;}
Exclude<T,属性> - 将T里面的属性排除,T为联合类型
type Types = 'name' | 'age' | 'address'type Types1 = Exclude<Types,'name'>// type Types1 = 'age' | 'address'
相关文章
北京时间8月3日晚,“股神”巴菲特旗下伯克希尔·哈撒韦公司公布2024年度第二季度财务报告。根据报告,该公司在第二季度将其持有的苹果公司股份从第一季度...
2024-09-19 906 但斌回应巴菲特减持近半苹果股份我们没有跟随减持的想法
在当今社会,公众人物的私生活总是备受关注,对于王暖暖来说,她选择了一条与众不同的道路,那就是不打算公布孩子的父亲身份,这一决定背后,究竟隐藏着怎样的思...
2024-09-19 6
随着中秋佳节的临近,月饼市场本应迎来一年一度的销售热潮,今年月饼市场却出现了整体遇冷的现象,尽管如此,一种名为“大月饼”的产品却意外地被消费者抢购一空...
2024-09-19 4
在浩瀚无垠的海洋之上,一场大自然的狂欢正在上演,这就是我们今天的主角——台风普拉桑,它以惊人的速度席卷而来,其速度堪比飞毛腿,给人们带来了前所未有的震...
2024-09-19 6
诺基亚,这个曾经的移动通信巨头,在智能手机时代经历了起起落落,尽管在2010年代中期失去了一些市场份额,但近年来,诺基亚通过与HMD Global的合...
2024-09-19 4
近年来,美国空军部长多次在公开场合发表言论,其中不乏对中国军力发展的担忧和警示,一句“中国现在是一个威胁”的言论引起了广泛关注,本文将探讨这一言论背后...
2024-09-19 4
诺基亚,这个名字曾经在手机行业里犹如雷贯耳,不仅见证了移动通信技术的崛起与发展,更承载着一代人的记忆与情感,而在其辉煌的历史中,有一类产品以其独特的魅...
2024-09-19 5
本文来源:时代财经作者:王夏9月,华为全球首发的三折手机无疑是科技圈最大亮点之一。目前,这款还没有正式开售的的产品预约人数已达642万。Counter...
2024-09-19 826 三折屏不够还要卷轴屏?华为的竞争对手又来了?