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

“keyof typeof value”与“keyof interface”产生不同的类型结果

是因为它们分别针对不同的类型进行操作。

  1. keyof typeof value:
    • 概念:keyof typeof value 是 TypeScript 中的一种类型操作符,用于获取一个值的类型的所有属性名组成的联合类型。
    • 分类:属于 TypeScript 的类型操作符。
    • 优势:可以在编译时进行类型检查,避免在运行时出现属性名错误的问题。
    • 应用场景:常用于需要动态访问对象属性的场景,例如根据属性名从对象中获取对应的值。
    • 推荐的腾讯云相关产品:腾讯云函数计算(SCF)。
    • 产品介绍链接地址:https://cloud.tencent.com/product/scf
  • keyof interface:
    • 概念:keyof interface 是 TypeScript 中的一种类型操作符,用于获取一个接口的所有属性名组成的联合类型。
    • 分类:属于 TypeScript 的类型操作符。
    • 优势:可以在编译时进行类型检查,确保使用的属性名存在于接口中。
    • 应用场景:常用于定义接口的属性名列表,以及在泛型中使用。
    • 推荐的腾讯云相关产品:腾讯云云函数(Cloud Function)。
    • 产品介绍链接地址:https://cloud.tencent.com/product/scf

需要注意的是,以上推荐的腾讯云产品仅供参考,具体选择还需根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

Person; P.S.注意,不同于typeof面向值,keyof是针对类型的,而不是值(因此keyof obj不合法) 这种类型查询能力在pluck等预先无法得知(或无法穷举)属性名的场景很有意义...keyof与T[K]同样适用于字符串索引签名(index signature),例如: interface NetCache { [propName: string]: object; } //...其中: K:类型变量,依次绑定到每个属性上,对应每个属性名的类型 Keys:字符串字面量构成的联合类型,表示一组属性名(的类型) boolean:映射结果类型,即每个属性值的类型 类似的,[P in keyof...(不同源类型能够对应不同的映射规则),例如: type FunctionPropertyNames = { [K in keyof T]: T[K] extends Function ?...R : any; (摘自TypeScript/lib/lib.es5.d.ts) 具体示例见Predefined conditional types 四.总结 除类型组合外,另2种产生新类型的方式是类型查询与类型映射

1.7K10
  • 一文看懂TypeScript工具类型

    = { // b的类型是 { value: boolean } value: true, }; 联合类型 联合类型就是类型用 | 操作符连起来的类型。...联合类型赋值的时候是相联合类型的综合。子类型与父类型联合的结果是父类型,任何类型与never联合是任何类型。对于类、接口等对象的联合,可赋的值是其中任意一个,但访问只能访问所有类型的共有属性和方法。。...子类型与父类型交叉的结果是子类型。对于没有交集类型的交叉则是 never 。对象类型的交叉是属性的综合。...null/undefined/never类型交叉是对应的类型 如果交叉的两个属性相同,那么他们的属性类型也是每个属性交叉的结果,看一个稍微复杂的例子: interface IA { x: {a: string...、数字和Symbol,所以 keyof 的结果必定是联合类型 number | string | symbol 的子类型。

    27210

    TypeScript进阶 之 重难点梳理

    name: string // 错误,`name`的类型与索引类型返回值的类型不匹配 } 当然,我们也可以将索引签名设置为只读,这样就可以防止给索引赋值 interface ReadonlyStringArray...与 interface 不同,type 还可以用来标书其他的类型,比如基本数据类型、元素、并集等 type Name = string; type PartialPointX = {x:number...理论上,任何运行时的符号名想要为类型系统所用,都要加上 typeof。 在使用class时,class名表示实例类型,typeof class表示 class本身类型。...假设 T 是一个类型,那么keyof T产生的类型就是 T 的属性名称字符串字面量类型构成的联合类型(联合类型比较简单,和交叉类型对立相似,这里就不做介绍了)。 「注意!...never : T; 以上语句的意思就是 如果 T 能赋值给 U 类型的话,那么就会返回 never 类型,否则返回 T,最终结果是将 T 中的某些属于 U 的类型移除掉 举个栗子: type T00

    3.9K20

    TypeScript keyof 操作符

    | "toFixed" | "toExponential" | ... let K3: keyof symbol; // let K1: "valueOf" 此外 keyof 也称为输入索引类型查询,与之相对应的是索引访问类型...对象上的不同属性,可以具有完全不同的类型,我们甚至不知道 obj 对象长什么样。 那么在 TypeScript 中如何定义上面的 prop 函数呢?...这就阻止我们尝试读取不存在的属性。 三、keyof 与对象的数值属性 在使用对象的数值属性时,我们也可以使用 keyof 关键字。...最后,我们来简单介绍一下 keyof 与 typeof 操作符如何配合使用。 四、keyof 与 typeof 操作符 typeof 操作符用于获取变量的类型。...const COLORS = { red: 'red', blue: 'blue' } // 首先通过typeof操作符获取color变量的类型,然后通过keyof操作符获取该类型的所有键,

    8.1K40

    TS 进阶 - 类型工具

    # 联合类型与交叉类型 交叉类型,符号 &,即按位与运算符。...而代表按位与的 & ,则需要符合所有类型,才可以说实现了这个交叉类型,即 A & B 需要同时满足 A 与 B 两个类型。...Foo; // 'bar' | 2022 除了应用于已知的对象类型结构上之外,可以直接 keyof any 来产生一个联合类型——由所有可用作对象键值的类型组成:string | number |...type PropTypeUnion = Foo[keyof Foo]; // number | boolean | string 使用字面量联合类型进行索引类型访问,其结果就是将联合类型每个分支对应的类型进行访问后的结果...工具类型 # 类型安全保护 # 类型查询 TypeScript 存在两种功能不同的 typeof 操作符,常见的是 JavaScript 中用于检查变量类型的 typeof,它会返回 'string

    89220

    TS扫盲大法-基础篇

    的区别 相同点 所有对象类型都可以用type或者interface来定义,type在实际项目中更广义些,而interface更多的时候描述一个对象类型更狭义一些,他们都可以定义对象类型 不同点 type...值的value做为另一个对象的key,将一个枚举值的key作为一个对象的value const enum FOODS { a = '鸭子', b = '鸡腿' } console.log(FOODS.a...通常在实际业务中, 通用的属性值可能类型不同那么我们会重复定义很多类型,比如下面 interface obj1 { a: boolean; } interface obj2 { a: string...objType { a: T },我们怎么理解,首先objType你可以把它看成一个接口名称,其实与普通申明一个普通接口名一样,T可以看成一个形参,一个占位符,我们可以在实际用的地方灵活的传入不同类型...= keyof typeof SERVER // type serverType = "TEST" | "PRD" | "DEV" 访问索引类型 有时我们需要访问具体接口的某个字段的类型或者数组中的类型

    1.1K10

    Typescript 高级用法以及项目实战问题

    any 高度类似了,你可以把它转化成任何类型,不同的地方是,在静态编译的时候,unknown 不能调用任何方法,而 any 可以。...与||的功能是相似的,区别在于 「??在左侧表达式结果为 null 或者 undefined 时,才会返回右侧表达式」 。 比如我们书写了let b = a ??...keyof 的语法格式如下 类型 = keyof 类型 实例类型获取 typeof typeof 是获取一个对象/实例的类型,如下: const me: Person = { name: 'gzx'...PersonKey = keyof typeof me; // 'name' | 'age' 总结起来 typeof 的语法格式如下: 类型 = typeof 实例对象 遍历属性 in in...: number, value: T): T[] { return new Array(length).fill(value); } 这个函数接受一个长度参数和默认值,结果就是生成使用默认值填充好对应个数的数组

    1.9K50

    TypeScript 强大的类型别名

    typeof 在 JS 中 typeof 可以判断一个变量的基础数据类型,在 TS 中,它还有一个作用,就是获取一个变量的声明类型,如果不存在,则获取该类型的推论类型。...keyof keyof 可以用来取得一个对象接口的所有 key 值: interface Person { name: string; age: number; location...这个 modifier的标识。 与之对应的还有个 +?, 这个含义自然与 -? 之前相反, 它是用来把属性变成可选项的,+ 可省略,见 Partial。 再拓展一下,除了可以应用于 ?...keyof any, T> = { [P in K]: T; }; 可以根据 K 中的所有可能值来设置 key,以及 value 的类型,举个例子: type T11 = Record<'a...never : T; 以上语句的意思就是 如果 T 能赋值给 U 类型的话,那么就会返回 never 类型,否则返回 T,最终结果是将 T 中的某些属于 U 的类型移除掉,举个例子: type T00

    3.4K20

    Typescript常看常新

    因此,定义的对象必须满足里面的所有属性和值。 interface和type的区别 interface 与 type 的区别有下面几点。...类型断言也是开发中经常会用到的东西,这里补充一点知识吧 as 对于没有类型声明的值,TypeScript 会进行类型推断,很多时候得到的结果,未必是开发者想要的。...]: string } 上面的例子中,将Obj中所有属性对应的值类型都修改为了string类型,变成了一个新的类型 in 运算符 TypeScript 语言的类型运算中,in运算符有不同的用法,用来取出...得出的结果也是一个联合类型 方括号运算符([])用于取出对象的键值类型,比如T[K]会返回对象T的属性K的类型。...(typeof MyArray)[number] // 返回 string type Person = (typeof MyArray)[number]; 类型映射 为了增加代码复用性,可以把常用的映射写成泛型

    24610

    【TypeScript 4.5】007-第 7 章 类型操纵

    【TypeScript 4.5】007-第 7 章 类型操纵 一、从类型中创建类型 1、概述 我们可以通过各种类型操作符 用一种简洁的、可维护的方式表达复杂的操作和值 2、方法 泛型类型、keyof 类型操作符...“typeof Beekeeper”的参数不能赋给类型“new () => Animal”的参数。...// createInstance(Beekeeper) 九、keyof 类型操作符 1、概述 说明 keyof 运算符可以接收一个对象类型 它会产生它的 key 的字符串 或者与数字字面量的结合 或者可以说是一个联合类型...十、typeof 类型操作符 1、概述 说明 typeof 可以让我们在类型的上下文中使用它来引用一个变量或属性的类型 代码示例 let s = "hello" // 使得 n 的类型为 s 的类型 let...n: typeof s // 打印的时候结果为:string console.log(typeof s) n = "world" 2、代码演示 普通例子 console.log(typeof "hello

    3900
    领券