首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TypeScript映射类型

TypeScript映射类型 TypeScript 官方文档早已更新,但我能找到中文文档都还停留在比较老版本。所以对其中新增以及修订较多一些章节进行了翻译整理。...映射类型建立在索引签名语法上,我们先回顾下索引签名: // 当你需要提前声明属性类型时 type OnlyBoolsAndHorses = { [key: string]: boolean |...(Mapping Modifiers) 在使用映射类型时,有两个额外修饰符可能会用到,一个是 readonly,用于设置属性只读,一个是 ?...(Key Remapping via as) 在 TypeScript 4.1 及以后,你可以在映射类型中使用 as 语句实现键名重新映射: type MappedTypeWithNewProperties...,举个例子,这是一个使用条件类型映射类型,会根据对象是否有 pii 属性返回 true 或者 false : type ExtractPII = { [Property in keyof

63810

TypeScript-映射类型

映射类型概述 根据 旧 类型创建出 新 类型, 我们称之为映射类型 假如如下 TestInterface1 是旧类型: interface TestInterface1 { name:...string, age: number } 那么这个时候根据 TestInterface1 创建出来类型就称之为映射类型,例如如下 TestInterface2: interface...将原有类型 部分 内容映射到新类型中 interface TestInterface { name: string, age: number } type MyType = Pick...Record 映射类型 他会将一个类型所有属性映射到另一个类型上并创造一个新类型 type Animal = 'person' | 'dog' | 'cat'; interface TestInterface...由映射类型进行推断 对于 Readonly,Partial 和 Pick 映射类型, 我们可以对映射之后类型进行拆包 还原映射之前类型, 这种操作我们称之为 拆包 interface MyInterface

19120
您找到你想要的搜索结果了吗?
是的
没有找到

TypeScript系列教程九《类型转换》-- 映射类型

类型转换是TS最好玩也是语言灵魂,想玩好需要熟练各种手段和工具,下面一一介绍类型转换一些常用手段。...Mapped Types ---- 有时候对象属性类型重复或者一个类型基于另一个了类型时候 映射类型基于索引签名语法构建,用于声明尚未提前声明属性类型: type OnlyBoolsAndHorses...,OptionsFlags将会把Type所有的属性当做key,所有的类型变成boolean type FeatureFlags = { darkMode: () => void; newUserProfile...在TypeScript 4.1及更高版本中,您可以使用映射类型as子句重新映射映射映射类型键: type MappedTypeWithNewProperties = { [...,例如,这里有一个使用条件类型映射类型,该类型根据对象属性pii是否设置为文本true返回true或false: type ExtractPII = { [Property in keyof

1.2K10

TypeScript函数类型

(x,y){ return x+y; } 一个函数有输入和输出,要在 TypeScript 中对其进行约束,需要把输入和输出都考虑到,其中函数声明类型定义较简单: function sum...在 TypeScript 类型定义中,=> 用来表示函数定义,左边是输入类型,需要用括号括起来,右边是输出类型。...==-1; } 采用函数表达式|接口定义函数方式时,对等号左侧进行类型限制,可以保证以后对函数名赋值时保证参数个数、参数类型返回类型不变。...参数默认 在 ES6 中,我们允许给函数参数添加默认TypeScript 会将添加了默认参数识别为可选参数: function buildName(firstName:string,lastName...在编辑器代码提示中,可以正确看到前两个提示。 注意,TypeScript 会优先从最前面的函数定义开始匹配,所以多个函数定义如果有包含关系,需要优先把精确定义写在前面。

2K30

索引类型映射类型与条件类型_TypeScript笔记12

(n => o[n]); } pluck函数能从o中摘出来names指定那部分属性,存在2个类型约束: 参数names中只能出现o身上有的属性 返回类型取决于参数o身上属性类型 这两条约束都可以通过泛型来描述...其中: K:类型变量,依次绑定到每个属性上,对应每个属性名类型 Keys:字符串字面量构成联合类型,表示一组属性名(类型) boolean:映射结果类型,即每个属性类型 类似的,[P in keyof...作为返回类型,即所谓“拆箱” 三.条件类型 条件类型用来表达非均匀类型映射(non-uniform type mapping),能够根据类型兼容关系(即条件)从两个类型中选出一个: T extends...R : any; 上例中引入了类型变量R表示函数返回类型,并在True分支中引用,从而提取出返回类型 P.S.特殊,如果存在重载,就取最后一个签名(按照惯例,最后一个通常是最宽泛)进行推断,例如:...never : T; // 取出函数类型返回类型 type ReturnType any> = T extends (...args: any)

1.7K10

TypeScript函数类型

声明式类型函数 通过如下代码我们实现了一个返回为number类型方法,同时我们也对返回和参数进行了约束 function funcType(name:string,age:number):number...return age; } var ageNum1:number=funcType1("张三",18,"男") var ageNum2:number=funcType1("张三",18) 对方法进行添加默认...function funcType2(name:string="张三",age:number=18):number{ return age; } 表达式类型函数 var funcType3=function...(name:string,age:number):number { return age; } 如上代码片段是我们之前创建函数 那么我们还可以对变量进行约束 var funcType4:(name...通过如下代码我们可以实现一个联合类型函数,当然这可以采用重载方式 当我们参数是number类型时我们返回是number类型,当我们参数是string类型时我们返回是string类型,这一块具体在我们实际业务中可以根据实际需求进行相应修改

77720

TypeScript函数类型

# 声明式类型函数 通过如下代码我们实现了一个返回为number类型方法,同时我们也对返回和参数进行了约束 ``` function funcType(name:string,age:number...age; } var ageNum1:number=funcType1("张三",18,"男") var ageNum2:number=funcType1("张三",18) ``` 对方法进行添加默认...``` function funcType2(name:string="张三",age:number=18):number{ return age; } ``` # 表达式类型函数 ```...var funcType3=function(name:string,age:number):numbe { return age; } ``` 如上代码片段是我们之前创建函数 那么我们还可以对变量进行约束...通过如下代码我们可以实现一个联合类型函数,当然这可以采用重载方式 当我们参数是number类型时我们返回是number类型,当我们参数是string类型时我们返回是string类型,这一块具体在我们实际业务中可以根据实际需求进行相应修改

73820

【Python】类型注解 ④ ( 函数类型注解 | 函数形参类型注解语法 | 函数返回类型注解 )

一、函数形参类型注解 1、函数中由于类型缺省导致提示问题 由于定义 函数 时 , 没有为 函数形参 设置 类型注解 , 编写函数时 , PyCharm 工具无法提示没有类型形参 : 在定义函数时...Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py 3 Process finished with exit code 0 二、函数返回类型注解...---- 1、函数返回类型注解语法 函数返回类型注解语法 : def 函数名称(形参列表) -> 返回类型: pass 函数 返回 类型注解 , 在 函数形参列表后 , 使用 -> 指定 返回类型...; 返回 类型注解 , 是建议性 , 不是强制性 , 不按照注解类型返回 , 也不会报错 ; 示例 : # 函数形参 设置 类型注解 def add(x: int, y: int) ->...int: return x + y 2、代码示例 - 函数返回类型注解 代码示例 : """ 类型注解 代码示例 """ # 函数形参 设置 类型注解 def add(x: int, y:

23310

Python常看函数用法,返回类型

Python函数非常多,可以使用help()函数来初略获得函数用法 help(print) Help on built-in function print in module builtins:...同时我们自己定义函数时,也可以适当来解释这个函数作用 def times(s:str,n:int) ->str: # 返回为str类型 ''' 返回n个s字符串 '''...__annotations__方法获取函数类型注释 times....__annotations__ {'s': str, 'n': int, 'return': str} 他就以字典形式返回了他两个参数,以及一个str类型返回 查看函数文档使用....__doc__) 返回n个s字符串 在面向对象编程中,python 类有多继承特性,如果继承关系太复杂,很难看出会先调用那个属性或方法。 为了方便且快速地看清继承关系和顺序,可以使用.

1.1K20

TypeScript 类型体操:合并映射类型处理结果为联合类型

索引类型TypeScript常见类型,它是聚合多个元素类型,对象、类、元组等都是索引类型。...: TypeScript 也内置了很多基于映射类型实现工具类型,比如 Partial、Required 等。...外层映射类型 [Key in keyof Obj] 就是对每个 Key 做处理,它也是一个映射类型,而 Key2 来自于刚才 Key,那么这样映射完之后类型就是这样: 这时你取 name 就是这样...: 而传入联合类型时候,会分别传入每个类型做处理,也就是这样: 所以直接在这里取 keyof Obj 所有索引: 总结一下:当我们需要把索引分开时候,可以加一层映射类型,在位置对每个索引做处理...总结 索引类型TypeScript常见类型,可以通过映射类型语法来对它做一些修改,生成新索引类型

1.6K40

【Kotlin】函数 ⑧ ( 函数引用 作为函数参数 | ::函数名 | 函数类型 作为函数返回类型 )

文章目录 一、函数引用作为函数参数 二、函数类型作为函数返回 一、函数引用作为函数参数 ---- 函数 作为参数 , 有两种方式 : 传递 Lambda 表达式 , 也就是 匿名函数 作为参数值 ;...---- 函数 返回类型 , 也可以是 函数类型 ; 也就是说 匿名函数 , Lambda 表达式 可以作为 函数返回 ; 代码示例 : 下面的代码中 , returnFun 函数返回...是一个函数类型 (String)->String , 返回是一个 匿名函数 Lambda 表达式 ; 使用 var fun0 变量 接收 上述函数 返回 Lambda 表达式 , 并执行该 匿名函数...; fun main() { // 接收函数类型返回 var fun0 = returnFun(); // 执行 返回 函数 var str = fun0("Tom...") println(str) } // 函数返回函数类型 fun returnFun(): (String)->String { return { name: String

2.6K10

TypeScript 官方手册翻译计划【十】:类型操控-映射类型

项目地址:TypeScript-Doc-Zh,如果对你有帮助,可以点一个 star ~ 本章节官方文档地址:Mapped Types 映射类型 有时候我们不想重复编写代码,这时候就需要基于某个类型创建出另一个类型...索引签名用于为那些没有提前声明属性去声明类型,而映射类型是基于索引签名语法构建。...in keyof Type]: boolean; }; 在这个例子中,OptionsFlags 会接受类型 Type 所有属性,并将它们改为布尔。...在 TypeScript4.1 或者更高版本中,你可以在映射类型中使用 as 子句实现键重新映射: type MappedTypeWithNewProperties = { [...举个例子,下面是一个使用了条件类型映射类型,根据对象是否有一个设置为字面量 true 属性 pii,它会返回 true 或者 false: type ExtractPII = {

76150

类型挑战】获取函数返回类型,难度⭐️⭐️

题目分析: 题目地址:2-medium-return-type 如上图所示,我们需要设计一个通用了类型工具还提取函数类型返回类型,功能同内置ReturnType。...题目解答: 测试用例: 给出测试用例挺多但是没有特殊需要说明,我们只需要通过设计类型工具取出到通过Equal来进行比较即可。...1 : 2 答案及解析: 其实在上一题中我们已经提取到函数类型参数类型了,我们这次修改为提取返回类型即可,我们此次传入类型T可以使用泛型约束输入,也不可不用约束,因为我们还是会用到条件类型来进行判断...同样采用条件类型+infer来进行提取,将infet占位return位置,用R来代替,如果T可分配到右侧则返回R,否则返回never; /* _____________ 你代码 __________...R : never; 复制代码 接下来一题是:【类型挑战】实现 Omit,难度⭐️⭐️

1.2K40

Golang 函数返回类型是接口时返回对象指针还是

1.接口简介 Interface 是一组抽象方法(未具体实现方法,仅包含方法名参数返回方法)集合,如果实现了 interface 中所有方法,即该类型就实现了该接口。...注意: (1)接口中不能含有属性; (2)每种类型都能实现多个接口; (3)未初始化接口类型变量为 nil。...接口声明格式: type InterfaceName interface { //方法列表 } 2.函数返回类型是接口时返回对象指针还是 函数返回类型是接口时返回对象指针还是,这个要看具体需要...返回对象示例。...company="alibaba" e1.Print() } e.Print() } 输出结果: company=alibaba company=tencent 可见函数返回类型是接口时返回对象

7.9K30
领券