首页
学习
活动
专区
工具
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等预先无法得知(或无法穷举)属性名场景很有意义...keyofT[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进阶 之 重难点梳理

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.8K20

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操作符获取该类型所有键,

7.9K40

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

84320

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" 访问索引类型 有时我们需要访问具体接口某个字段类型或者数组中类型

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.8K50

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.3K20

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]; 类型映射 为了增加代码复用性,可以把常用映射写成泛型

14410

TypeScript 官方手册翻译计划【七】:类型操控-类型操作符

类型操作符 keyof 类型操作符 keyof 类型操作符接受一个对象类型作为参数,并基于它产生一个由字符串字面量或者数值字面量组成联合类型。...= keyof Point 如果 keyof 操作类型有 string 或者 number 类型索引签名,那么 keyof 会返回该索引签名类型: type Arrayish = {...keyof 类型和映射类型结合时候会发挥很大作用,后续章节我们也会进行介绍。...Typeof 类型操作符 typeof 类型操作符 JavaScript 中本身就有一个可用于表达式上下文 typeof 操作符: // 打印 "string" console.log(typeof..."Hello world"); TypeScript 则添加了一个可用于类型上下文 typeof 操作符,让你可以引用某个变量或者属性类型: let s = "hello"; let n: typeof

56420

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券