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

为什么在typescript中` `keyof any`的类型是` `string | number |symb`?

在TypeScript中,keyof any的类型是string || symbol,这是因为在JavaScript中,对象的键可以是字符串、数字或符号。而keyof any表示可以是任何类型的键,因此它的类型是这三种类型的联合类型。

具体解释如下:

  1. string类型:字符串是JavaScript中最常用的键类型,可以用作对象的属性名。例如,{ name: 'John' }中的name就是一个字符串键。
  2. number类型:数字也可以作为对象的键。JavaScript中的数组就是一个典型的例子,它的索引就是数字键。例如,[1, 2, 3]中的索引0、1、2就是数字键。
  3. symbol类型:符号是ES6引入的一种新的数据类型,它可以作为对象的唯一标识符。符号键在对象中具有唯一性,不会与其他键冲突。例如,const key = Symbol('key')定义了一个符号键。

综上所述,keyof any的类型是string || symbol,表示可以是任何类型的键。在TypeScript中,这个类型常用于泛型约束或索引类型查询,用于获取对象的键的联合类型。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云产品:https://cloud.tencent.com/product
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云原生应用引擎(TKE):https://cloud.tencent.com/product/tke
  • 云数据库MySQL版(CMYSQL):https://cloud.tencent.com/product/cmysql
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 人工智能(AI):https://cloud.tencent.com/product/ai
  • 物联网(IoT):https://cloud.tencent.com/product/iotexplorer
  • 移动开发(移动推送、移动分析):https://cloud.tencent.com/product/mpns
  • 区块链(BCS):https://cloud.tencent.com/product/bcs
  • 元宇宙(Tencent XR):https://cloud.tencent.com/product/xr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Node.js 项目 TypeScript 改造指南(二)

any 处理 使用 TypeScript 就不得不面对 any 带来问题,首先来看看为什么 any 值得我们认真对待。...any 来源 TypeScript 3.0 版本之前,只有 any 这样一个顶级类型。...如果有一个值来自动态内容,我们定义时候并不确定它类型时,any 可能唯一选择,官方文档[2]也是如此解释。因此我们可以看到 any 基础库、第三方库普遍存在。...'object' : 'ref'] 如果 T 可以解释为联合类型条件判断可以进行展开,除了联合类型any、boolean、使用 keyof 得到索引类型,都可以展开。...:number } 收窄类型 TypeScript 没有提供类型转换能力,我们如何从 any、unknown、复杂联合类型获取具体类型就成为一个问题。

3.5K10

为什么StringJava不可变

String Java 不可变。 不可变类只是一个无法修改其实例类。 创建实例时,将初始化实例所有信息,并且无法修改信息。 不可变类有许多优点。...本文总结了为什么 String 设计为不可变。 这篇文章从内存,同步和数据结构角度说明了不变性概念。 1. 字符串池 字符串池(String intern pool)方法区域中特殊存储区域。...缓存哈希码 字符串哈希码经常在 Java 中使用。 例如, HashMap 或 HashSet 。 不可变保证哈希码总是相同,这样它就可以缓存起来而不用担心变化。...String,它具有如下代码: private int hash;//this is used to cache hash code. 3....(new String("b")); set.add(new String("c")); for(String a: set) a.value = "a"; 在此示例,如果 String 可变

1.3K20

【TS 演化史 -- 17】各文件JSX工厂 、有条件类型和映射类型修饰符

下面一个 TypeScript lib.es5.d.ts类型定义文件预定义有条件类型例子 /** * Exclude null and undefined from T */ type...never类型 TypeScript 底层类型,表示从未出现类型。 分布式有条件类型 那么,为什么e 条件类型和never类型组合有用呢?它有效地允许咱们从联合类型删除组成类型。...never : P }[keyof User]; 其次,咱们映射类型解析keyof User。...TypeScript 一个长期存在特性要求是能够提取给定函数返回类型。下面ReturnType类型简化版本,该类型lib.es5.d.ts预定义。...预定义有条件类型 TypeScript 2.8 lib.d.ts里增加了一些预定义有条件类型: Exclude -- 从T剔除可以赋值给U类型

2.5K20

速查手册 - TypeScript 高级类型 cheat sheet

:TS 内置工具泛型高阶使用 TypeScript 2.1 新特性一览:查找/映射类型any 类型推断 都是 2.1 版本引入 TypeScript 2.8:Exclude 等条件类型 2.8...1.4、`infer` 关键字 infer 这个关键字 TS 2.8 版本引入, 条件类型语句中,该关键字用于替代手动获取类型。...: number}, 'name'> // -> { age: number } 3.4、Overwrite(第三方) 作用:T 定义被 K 内容所覆盖,多在高阶组件中使用,内部借助 Diff...{ a: number, b: number, c: boolean }; 3.5、ReturnType (官方) 作用:从 T 忽略 K 属性名 ,实现忽略对象某些属性功能,多在高阶组件中使用...T> { } 解释: 可以看到声明只有一个接口,没有任何实现 说明这个类型 TS 源码层面支持,而不是通过类型变换。

1.2K10

TypeScript 强大类型别名

typeof JS typeof 可以判断一个变量基础数据类型 TS ,它还有一个作用,就是获取一个变量声明类型,如果不存在,则获取该类型推论类型。...keyof any, T> = { [P in K]: T; }; 可以根据 K 所有可能值来设置 key,以及 value 类型,举个例子: type T11 = Record<'a...然后 U 'a' | 'c' | 'f' ,返回类型就可以将U类型给移除掉,也就是 'b' | 'd' 了。...// node_modules/typescript/lib/lib.es5.d.ts interface ThisType { } 可以看到声明只有一个接口,没有任何实现,说明这个类型...参考 TypeScript 中文网 TS 内置类型简述 TypeScript 一些你可能不知道工具泛型使用及其实现

3.3K20

TypeScript 类型体操 - 基础操作

可以对传入类型参数(泛型)做逻辑运算,产生新类型 # TypeScript 类型系统类型 JavaScript 运行时类型 boolean number bigint string symbol...R : never; // 类型参数用于接受具体类型类型运算也相当于局部变量 type isNumber = T extends number ?...但其实也不能叫变量,因为它们不可变。想要变化就需要重新构造新类型,并且可以构造新类型过程对原类型做一些过滤和变换。.../ }; // readonly say: () => void; // } TypeScript 类型系统高级类型也同样支持递归,类型体操,遇到数量不确定问题,要条件反射想到递归... TypeScript 中有函数参数有逆变性质,也就是如果参数可能多个类型,参数类型会变成它们交叉类型

1.7K60

Vue3 跟着尤雨溪学 TypeScript 之 Ref 类型从零实现

为什么说 Ref 个比较复杂类型呢?假如 ref 函数又接受了一个 Ref 类型参数呢?Vue3 内部其实是会帮我们层层解包,只剩下最里层那个 Ref 类型。...索引签名 条件类型 keyof infer 先逐个拆解这些知识点吧,注意,如果本文中这些知识点还有所不熟,一定要在代码编辑器反复敲击调试,刻意练习,也可以 typescript-playground...keyof keyof 操作符 TS 中用来获取对象 key 值集合,比如: type Obj = { foo: number; bar: string; } type Keys = keyof...它出现使得 ReturnType、 Parameters 等一众工具类型支持都成为可能, TypeScript 进阶必须掌握一个知识点了。 注意前置条件,它一定是出现在条件类型。...当然,这也可以看出 TypeScript 不断进步和优化,非常期待未来它能够越来越强大。 相信看完本文你,一定会对上文中提到一些高级特性有了进一步掌握。

6.2K11

掌握 TypeScript:20 个提高代码质量最佳实践

以下 TypeScript 定义和使用接口示例: interface User { name: string; age: number; } let user: User = {name: "John...最佳实践8:使用 unknown 类型 unknown 类型 TypeScript 3.0 引入一种强大且限制性更强类型。它比 any 类型更具限制性,并可以帮助你防止意外类型错误。...最佳实践9:“never” TypeScript ,never 一个特殊类型,表示永远不会发生值。它用于指示函数不会正常返回,而是会抛出错误。...运算符 keyof 运算符 TypeScript 一个强大功能,可以创建一个表示对象键类型。...15: 类型保护 TypeScript ,处理复杂类型时,很难跟踪变量不同可能性。

4K30

TS 从 0 到 1 - 泛型

C# 和 Java ,可以使用泛型来创建可重用组件,一个组件可以支持多种类型数据。这样用户就可以以自己数据类型来使用组件。...设计泛型关键目的成员之间提供有意义约束,这些成员可以是:类实例成员、类方法、函数参数、函数返回值。 泛型允许同一个函数接受不同类型参数一种模板。... T 称类型变量,希望传递给 identity 函数类型占位符,同时它被分配给 value 参数来代替它类型。...} type Func = typeof toArray; // (x: number) => number[] # keyof keyof 用于获取某类型所有键,其返回类型联合类型。...: string; // 数字索引 keyof StringArray1 => number } 为了同时支持两种索引类型,要求数字索引返回值必须字符串索引返回值子类。

37610

Vue3 跟着尤雨溪学 TypeScript 之 Ref 类型从零实现

为什么说 Ref 个比较复杂类型呢?假如 ref 函数又接受了一个 Ref 类型参数呢?Vue3 内部其实是会帮我们层层解包,只剩下最里层那个 Ref 类型。...索引签名 条件类型 keyof infer 先逐个拆解这些知识点吧,注意,如果本文中这些知识点还有所不熟,一定要在代码编辑器反复敲击调试,刻意练习,也可以 typescript-playground...keyof keyof 操作符 TS 中用来获取对象 key 值集合,比如: type Obj = { foo: number; bar: string; } type Keys = keyof...它出现使得 ReturnType、 Parameters 等一众工具类型支持都成为可能, TypeScript 进阶必须掌握一个知识点了。 注意前置条件,它一定是出现在条件类型。...当然,这也可以看出 TypeScript 不断进步和优化,非常期待未来它能够越来越强大。 相信看完本文你,一定会对上文中提到一些高级特性有了进一步掌握。

38710

TS 类型体操:索引类型映射再映射

TypeScript 给 JavaScript 加了套静态类型系统。其中,JavaScript 数组、对象等聚合多个元素类型 TypeScript 对应索引类型。...: number; gender: boolean; } 我们知道,TypeScript 支持类型编程,也就是对类型参数(范型)做各种运算,产生新类型: type IsString = T...它是 TS 内置高级类型构造新索引类型过程,还可以做加上一些修饰符。...这里 Record 类型生成索引类型,我们上面介绍过,所以 T extends Record 就是约束了这里只能传入索引类型。...as 后面把索引转换成什么,我们原来基础上做了修改,加上了 get,并且后面内容首字母大写,这个 Capitalize 也是 TS 内置类型

90710
领券