首页 > 其他分享 >keyof和typeof的区别,连起来用会怎么样

keyof和typeof的区别,连起来用会怎么样

时间:2023-12-11 10:44:48浏览次数:28  
标签:用会 person Person keyof typeof 类型 KeysOfPerson

keyoftypeof 是 TypeScript 中的两个操作符,它们分别用于从类型中提取键和获取变量的类型。

  • keyof T:用于获取类型 T 的所有键的联合类型。也就是说,keyof T 将返回一个包含类型 T 中所有属性名的联合类型。

  • typeof x:用于获取变量 x 的类型。它会返回变量 x 的类型,包括基本类型、对象类型、函数类型等。

当将它们连起来使用时,可以实现一些有趣的功能。例如:

type Person = {
  name: string;
  age: number;
  gender: 'male' | 'female';
};

const person: Person = {
  name: 'Alice',
  age: 30,
  gender: 'female',
};

type KeysOfPerson = keyof typeof person;
// 等同于 type KeysOfPerson = 'name' | 'age' | 'gender'

const key: KeysOfPerson = 'name'; // 正确
const key2: KeysOfPerson = 'address'; // 错误,因为'address'不是Person类型的键

在这个例子中,我们首先定义了一个 Person 类型,然后创建了一个 person 对象。接着我们使用 typeof person 来获取 person 对象的类型,然后再使用 keyof 来获取该类型的所有键,最终得到一个类型 KeysOfPerson,包含了 Person 类型的所有键的联合类型。

通过将 keyoftypeof 连起来使用,我们能够以一种类型安全的方式获取对象的所有键,并将它们用于类型约束或其他操作中。

标签:用会,person,Person,keyof,typeof,类型,KeysOfPerson
From: https://www.cnblogs.com/crispyChicken/p/17893842.html

相关文章

  • typeof 主要用于检测基本数据类型,对于引用类型不大适用(因为所有引用类型的值都是 Obje
    下面哪些语句可以在JS里判断一个对象是否为String类型?AoStringObjectinstanceofStringBtypeofoStringObject=='string'CoStringObjectisStringD以上答案都不正确正确答案:AJS中值的类型分为原始值类型和对象类型。原始值类型包括number,string,boolean,nul......
  • TypeScript keyof
    keyof是TypeScript中的一个关键字,用于获取一个类型的所有键(属性名)构成的联合类型。它主要用于在类型系统中引用对象类型的键。以下是一些keyof的用法和示例:1.获取对象类型的键:typePerson={name:string;age:number;};typeKeysOfPerson=keyofPerson;/......
  • typeof只能检测数据类型,而不能检测从数据类型中派生的其他类型,数组为object派生对象,所
    typeof[]返回值为objecttypeof只能检测数据类型,而不能检测从数据类型中派生的其他类型,数组为object派生对象,所以依然返回objecttypeof判断引用类型数据,除了function以外都会判断成为objectfunctionfn(){console.log(1);}conso......
  • CMD和ENTRYPOINT同时使用会如何?
    一问题CMD和ENTRYPOINT同时使用会如何? 二解答ENTRYPOINT会将CMD中的值作为参数使用 验证如下:dockerfile文件如下:FROMcentos:7ENTRYPOINT["cal"]CMD["cal"]打包成镜像,随后run,结果如下: 三备注可以在run后,添加参数,将CMD中的值覆盖,覆盖后的值,会给ENTERPOINT......
  • ts的keyof
    keyof 是TypeScript中的一种类型操作符,用于获取一个类型的所有键(属性名)作为联合类型。它的语法如下:typeKeysOfType=keyofObjectType;其中:keyof 是TypeScript的关键字,用于指定要获取键的类型操作。ObjectType 是你想要获取键的对象类型。这将返回一个联合类型,包......
  • 数据库连接池为什么要用threadlocal呢?不用会怎样?
    数据库连接池使用ThreadLocal的主要原因是为了保证每个线程都有其独立的数据库连接,这样可以避免多个线程之间的连接干扰,提高系统的稳定性和性能。为什么使用ThreadLocal?线程安全:ThreadLocal可以为每个线程提供一个独立的数据库连接,确保多个线程操作数据库时不会出现资源竞争的......
  • typeof,instanceof
    typeof是用来判断数据类型的,包括以下7种:number、boolean、symbol、string、object、undefined、functioninstanceof检查左侧的对象是否是右侧构造函数的实例它会遍历整个原型链,即使原型链很深,只要在原型链上找到了指定的构造函数的原型,就会返回true。functionA(){}consta......
  • TypeScript中的keyof和in
    keyof使用keyof操作符接受一个对象类型作为参数,返回该对象属性名组成的字面量联合typeDog={name:string;age:number;};typeD=keyofDog;//typeD="name"|"age"可以看到keyofany返回的是一个联合类型:string|number|symbol,结合前文说到keyof是为了取得......
  • C# default 和 typeof
    查看类型的内部结构:typeof获取类型的默认值:defaultvartemp01=typeof(decimal);//查看类型的内部结构vartemp02=default(decimal);//获取类型的默认值 (341条消息)C#运算操作符_穿越虚空的博客-CSDN博客 ......
  • 【JS基础】instanceof 和 typeof
     instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。objectinstanceofconstructortypeof 运算符返回一个字符串,表示操作数的类型。typeofoperandconsole.log('--------------------instanceof-------------------')//t......