在 TypeScript 中,keyof 关键字是一个有用的类型操作符,它用于获取一个类型所有公共属性键的联合(Union)。当你想要操作一个类型的键而不是它的值时,keyof 操作符非常有用。...keyof Person 将包含所有这些可能的键以及明确声明的属性键 "age"。 类型守卫和断言 keyof 可以用来创建类型守卫,确保某个键存在于对象中。...与泛型结合 keyof 可以与泛型结合使用,以提供更通用的类型。...泛型 K 被约束为 T 的键之一,这样 TypeScript 就可以确保键是有效的。 keyof 是 TypeScript 提供的一个强大的工具,它允许你以类型安全的方式操作对象的键。...通过使用 keyof,你可以编写出更灵活和可重用的代码。
一、keyof 简介 TypeScript 允许我们遍历某种类型的属性,并通过 keyof 操作符提取其属性的名称。...keyof 操作符是在 TypeScript 2.1 版本引入的,该操作符可以用于获取某种类型的所有键,其返回类型是联合类型。...= "age" 的话,TypeScript 编译器会提示以下错误信息: Type '"age"' is not assignable to type '"name"'. keyof 操作符除了支持接口和类之外...那么在 TypeScript 中如何定义上面的 prop 函数呢?...、参考资源 keyof-and-lookup-types-in-typescript TypeScript - 类型操作符 typescriptlang - typescript-2-9 typescriptlang
keyof 操作 ---- keyof 见名知其意,就是获取对象所有的key,然后返回一个新的联合类型。...例如: type Point = { x: number; y: number }; type P = keyof Point; 扩展用途,将属性类型由number 修改成string: type SPoint...= {[K in P]:string} 如果一个类型由string、number索引签名,keyof 会返回这些类型代替。...type Arrayish = { [n: number]: unknown }; type A = keyof Arrayish; //A的类型是number type Mapish = { [k:...string]: boolean }; type M = keyof Mapish; //type M = string | number typeof 操作 ---- 之前JS早就存在typeof,typeof
方案 使用keyof解决这种问题: function getProp(obj: T, key: keyof T) { return obj[key] } console.log(getProp...我的目的就是,把那句Colors as any改掉,如果想用keyof的话,那么我们起码要获取到Colors的类型,但是这里他是一个字面量对象,所以本文要提到的另一个东西就引出来了,它就是typeof。...所以我们的getColor方法可以这样写: function getColor(key: keyof Color) { return Colors[key] } 综合一下,变成下面这样: function...getColor(key: keyof typeof Colors) { return Colors[key] } 再进阶 如果我想让输入#FF0000这样的字符串并且把Red返回去,那么在不改变...[0] } console.log(getColorName('#FF0000')) // Red 一定要有as const,不然TS编译器只能推导出Color[keyof Color]是string
keyof 运算符是在 TypeScript 2.1 版本中引入的。这个关键字已经成为 TypeScript 中高级类型的基石,并在代码中经常使用。...一、如何定义 KeyOf 运算符 在 TypeScript 中,keyof 运算符用于获取用户定义的值。它主要用于泛型,格式类似于联合运算符及其属性。keyof 运算符会检索用户指定的值的索引。...二、在泛型中使用 KeyOf 运算 使用 KeyOf 运算符应用约束 在 TypeScript 中,keyof 运算符常用于在泛型函数中应用约束。...三、 KeyOf 与映射类型的结合使用 在 TypeScript 中,我们可以使用 keyof 运算符与映射类型结合,将现有类型转换为新类型。...结束 TypeScript 的 keyof 运算符虽然小巧,但却是 TypeScript 机制中不可或缺的一环。
如果你对 TypeScript 还不熟悉,可以看下面几篇资料: 一份不可多得的 TS 学习指南(1.8W字) 了不起的 TypeScript 入门教程 一、什么是映射?...在学习 TypeScript 类型系统时,尽量多和数学中的集合类比学习,比如 TypeScript 中的联合类型,类似数学中的并集等。...实现方法 TypeScript 映射类型的语法如下: type TypeName = { [Property in keyof Type]: boolean; }; 我们既然可以通过...:将类型值设置为可选类型; { [P in keyof T] ?...在学习 TypeScript 类型系统时,尽量多和数学中的集合类比学习,比如 TypeScript 中的联合类型,类似数学中的并集等。
说明:目前网上没有 TypeScript 最新官方文档的中文翻译,所以有了这么一个翻译计划。...因为我也是 TypeScript 的初学者,所以无法保证翻译百分之百准确,若有错误,欢迎评论区指出; 翻译内容:暂定翻译内容为 TypeScript Handbook,后续有空会补充翻译文档的其它部分;...项目地址:TypeScript-Doc-Zh,如果对你有帮助,可以点一个 star ~ 本章节官方文档地址:Keyof Type Operator、Typeof Type Operator Keyof...类型操作符 keyof 类型操作符 keyof 类型操作符接受一个对象类型作为参数,并基于它的键产生一个由字符串字面量或者数值字面量组成的联合类型。...= keyof Point 如果 keyof 操作的类型有 string 或者 number 类型的索引签名,那么 keyof 会返回该索引签名的类型: type Arrayish = {
以下文章千年山月行,作者山月行 用了一段时间的 typescript 之后,深感中大型项目中 typescript 的必要性,它能够提前在编译期避免许多 bug,如很恶心的拼写问题。...以下是我在工作中总结到的比较实用的 typescript 技巧。 01 keyof keyof 与 Object.keys 略有相似,只不过 keyof 取 interface 的键。...: T[P];}; type Required = { [P in keyof T]-?...Use Workspace Version,它表示与项目依赖的 typescript 版本一直。...或者编辑 .vs-code/settings.json { "typescript.tsdk": "node_modules/typescript/lib"} 11 Typescript Roadmap
用了一年时间的 TypeScript 了,项目中用到的技术是 Vue + TypeScript 的,深感中大型项目中 TypeScript 的必要性,特别是生命周期比较长的大型项目中更应该使用 TypeScript...以下是我在工作中总结到的经常会用到的 TypeScript 技巧。 1....TypeScript 允许我们遍历某种类型的属性,并通过 keyof 操作符提取其属性的名称。...keyof 操作符是在 TypeScript 2.1 版本引入的,该操作符可以用于获取某种类型的所有键,其返回类型是联合类型。...keyof 与 Object.keys 略有相似,只不过 keyof 取 interface 的键。
用了一段时间的 typescript 之后,深感中大型项目中 typescript 的必要性,它能够提前在编译期避免许多 bug,如很恶心的拼写问题。...以下是我在工作中总结到的比较实用的 typescript 技巧。 01 keyof keyof 与 Object.keys 略有相似,只不过 keyof 取 interface 的键。...,Pick 一般用在 _.pick 中 type Partial = { [P in keyof T]?...Workspace Version,它表示与项目依赖的 typescript 版本一直。...或者编辑 .vs-code/settings.json { "typescript.tsdk": "node_modules/typescript/lib" } 11 Typescript Roadmap
温馨提示:因微信中外链都无法点击,请通过文末的” “阅读原文” 到技术博客中完整查阅版;(本文整理自技术博客) 学习 TypeScript 到一定阶段,必须要学会高阶类型的使用,否则一些复杂的场景若是用...附 中文文档,有人做了专门的读书笔记 Typescript学习记录:高级类型 TypeScript: Built-in generic types:推荐,用案例详细解释高阶类型的使用; TS 一些工具泛型的使用及其实现...:TS 内置工具泛型高阶使用 TypeScript 2.1 新特性一览:查找/映射类型及 any 类型的推断 都是在 2.1 版本引入的 TypeScript 2.8:Exclude 等条件类型是在 2.8...版本引入的,附中文 TypeScript 2.8 引入条件类型 lib.es2015.d.ts:大部分的声明在这个文件中可以找到 TypeScript 强大的类型别名:行文结构比较合理,也比较完善,可以当手册来查...X : Y 表示,如果 T 可以赋值给 U (类型兼容),则返回 X,否则返回 Y; 1.3、使用 `keyof` 和 `in` keyof 可以用来取得一个对象接口的所有 key 值: interface
答案:TypeScript 中的“keyof”关键字是一个类型运算符,它返回表示对象键的文字类型的联合。它允许您对对象键执行类型安全操作。...) 24.TypeScript 中的“keyof”和“typeof”关键字有何用途?...) 37.TypeScript 中的“keyof”运算符有何用途?...答案:TypeScript 中的“keyof”运算符用于获取对象类型的键的并集。它允许您以类型安全的方式使用对象的键。...延伸阅读:TypeScript官方手册——keyof类型运算符(https://www.typescriptlang.org/docs/handbook/advanced-types.html#keyof-type-operator
TypeScript高级类型-Partial 预备知识: TypeScript类型系统 接口 泛型 先来看一下 Partial 类型的定义 /** * Make all properties...希望得到的是由 key, value 组成的新类型 以上对应到 TypeScript 中是如何实现的呢?...对照最开始 Partial 的类型定义,能够捕捉到以下重要信息 keyof 是干什么的? in 是干什么的? [P in keyof T] 中括号是干什么的? ?...keyof keyof,即 索引类型查询操作符,我们可以将 keyof 作用于泛型 T 上来获取泛型 T 上的所有 public 属性名构成的 联合类型 注意:”public、protected、private...---- 总结: 针对高级类型的编写,我们可以尝试将其以 JavaScript 的代码方式表述出来,然后使用 TypeScript 对其进行实现。
keyof keyof 可以用来取得一个对象接口的所有 key 值: interface Person { name: string; age: number; location...源码: // node_modules/typescript/lib/lib.es5.d.ts type Partial = { [P in keyof T]?...// node_modules/typescript/lib/lib.es5.d.ts type Readonly = { readonly [P in keyof T]: T[P];...源码实现如下: // node_modules/typescript/lib/lib.es5.d.ts type Pick = { [P in K]...参考 TypeScript 中文网 TS 中的内置类型简述 TypeScript 一些你可能不知道的工具泛型的使用及其实现
六、掌握 TypeScript 的 keyof 类型操作符 TypeScript 的 keyof 操作符用于创建一个对象类型的所有键的联合类型,这一特性能帮助你创建依赖于其他类型键的动态和灵活的类型定义...1、keyof 操作符的基本用法 keyof 操作符会提取一个对象类型的所有键,并将这些键组成一个联合类型。...2、keyof 操作符的应用 使用 keyof 操作符,我们可以创建更加灵活的类型定义。...keyof 操作符极大地增强了 TypeScript 类型系统的灵活性,使我们可以更动态地定义和操作类型。掌握这一特性,可以让你的代码更加健壮和易于维护。...结束 通过以上的介绍,我们可以看到 TypeScript 提供的这些高级特性,如类型推断、条件类型、模板字面量类型、类型谓词、索引访问类型、keyof 类型操作符、映射类型、实用类型、区分联合类型和声明合并等
keyof 操作符:keyof 是TypeScript中的一个操作符,它返回一个类型的所有属性名的联合类型。...同样,在TypeScript中,映射类型可以遍历类型的每个属性并对其进行转换。 二、 将类型属性设为可选 在TypeScript中,我们常常需要将某个类型的所有属性设为可选属性。...掌握这一技巧可以让你在开发TypeScript应用时更加灵活地处理类型转换问题。 三、将可选属性设为必需属性 在TypeScript中,有时我们需要将类型中所有可选属性变为必需属性。...掌握这一技巧可以让你在开发TypeScript应用时更加灵活地处理类型转换问题。 四、将属性设为只读 在TypeScript中,有时我们需要将某个类型的所有属性设为只读。...掌握这一技巧可以让你在开发TypeScript应用时更加灵活地处理类型转换问题。 六、创建仅包含特定类型属性的类型 在TypeScript中,我们可以使用条件类型来创建仅包含某种类型属性的新类型。
当然,TypeScript 理解这种顺序。...keyof 操作符号 在 JS 中属性名称作为参数的 API 是相当普遍的,但是到目前为止还没有表达在那些 API 中出现的类型关系。 TypeScript 2.1 新增加 keyof 操作符。...输入索引类型查询或 keyof,索引类型查询keyof T产生的类型是 T的属性名称。...} TypeScript 现在以推断 prop 函数的返回类型为 T[K],这个就是所谓的 索引类型查询 或 查找类型。...entries(o: T): [keyof T, T[K]][]; // ... } entries
当然,TypeScript 理解这种顺序。...keyof 操作符号 在 JS 中属性名称作为参数的 API 是相当普遍的,但是到目前为止还没有表达在那些 API 中出现的类型关系。 TypeScript 2.1 新增加 keyof 操作符。...输入索引类型查询或 keyof,索引类型查询keyof T产生的类型是 T 的属性名称。...} TypeScript 现在以推断 prop 函数的返回类型为 T[K],这个就是所谓的 索引类型查询 或 查找类型。...entries(o: T): [keyof T, T[K]][]; // ... } entries
01 keyof keyof 与 Object.keys 略有相似,只不过 keyof 取 interface 的键。...假设有一个 object 如下所示,我们需要使用 typescript 实现一个 get 函数来获取它的属性值 const data = { a: 3, hello: 'world' } function...,可以使用它对属性做一些扩展, 如实现 Partial 和 Pick,Pick 一般用在 _.pick 中 type Partial = { [P in keyof T]?...Workspace Version,它表示与项目依赖的 typescript 版本一直。...或者编辑 .vs-code/settings.json { "typescript.tsdk": "node_modules/typescript/lib" } 11 Typescript Roadmap
说明:目前网上没有 TypeScript 最新官方文档的中文翻译,所以有了这么一个翻译计划。...因为我也是 TypeScript 的初学者,所以无法保证翻译百分之百准确,若有错误,欢迎评论区指出; 翻译内容:暂定翻译内容为 TypeScript Handbook,后续有空会补充翻译文档的其它部分;...项目地址:TypeScript-Doc-Zh,如果对你有帮助,可以点一个 star ~ 本章节官方文档地址:Mapped Types 映射类型 有时候我们不想重复编写代码,这时候就需要基于某个类型创建出另一个类型...创建)去遍历所有的键,从而创建一个新的类型: type OptionsFlags = { [Property in keyof Type]: boolean; }; 在这个例子中,...id: string; name: string; age: number; } */ 通过 as 实现键的重新映射 在 TypeScript4.1
领取专属 10元无门槛券
手把手带您无忧上云