首页 > 其他分享 >TypeScript keyof

TypeScript keyof

时间:2023-11-14 11:22:16浏览次数:39  
标签:TypeScript name person age Person keyof 类型

keyof 是 TypeScript 中的一个关键字,用于获取一个类型的所有键(属性名)构成的联合类型。它主要用于在类型系统中引用对象类型的键。

以下是一些 keyof 的用法和示例:

1. 获取对象类型的键:

type Person = {
  name: string;
  age: number;
};

type KeysOfPerson = keyof Person;

// KeysOfPerson 的类型为 "name" | "age"

在这个例子中,keyof Person 返回的是字符串字面量类型 "name" | "age",表示 Person 对象类型的所有键。

2. 用于函数参数类型的推断:

type Person = {
  name: string;
  age: number;
};

function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

const person: Person = {
  name: "John",
  age: 30
};

const personName: string = getProperty(person, "name");
const personAge: number = getProperty(person, "age");

在这个例子中,K extends keyof T 表示 K 必须是类型 T 的键。这样,在函数中使用 T[K] 就能够获取对象 obj 中键为 key 的属性的类型。

3. 类型安全的属性访问:

type Person = {
  name: string;
  age: number;
};

function logProperty<T, K extends keyof T>(obj: T, key: K): void {
  console.log(obj[key]);
}

const person: Person = {
  name: "John",
  age: 30
};

logProperty(person, "name"); // 输出: John
logProperty(person, "age");  // 输出: 30
logProperty(person, "address"); // Error: "address" 不是 Person 的键

在这个例子中,使用 keyof 进行属性访问,使得在编译时就能够捕获可能的错误,例如尝试访问不存在的属性。

总的来说,keyof 是 TypeScript 中用于处理对象类型键的一种强大的工具,它在很多情况下能够提高代码的类型安全性。

标签:TypeScript,name,person,age,Person,keyof,类型
From: https://www.cnblogs.com/ht955/p/17831202.html

相关文章

  • TypeScript 和 needle 库代码示例
    TypeScript和needle库编写的爬虫程序。import*asneedlefrom'needle';import{Request}from'http';constproxyHost='www.duoip.cn';constproxyPort=8000;//创建一个HTTP请求对象constreq=newRequest(',{headers:{&......
  • TypeScript版的吴恩达的机器学习课程练习-2
    这几天看完了逻辑回归相关的课程,听着的时候感觉还算顺利,但是在进行课程练习的过程中还是花费了较长的时间,因为我画出的图形和实际出题题目后面的图形有点不太一样,所以来来回回不断地调整参数。后面才发现和学习速度α以及梯度下降次数有很大的关系。模型实现具体的模型推到就不说了......
  • Vite4+Typescript+Vue3+Pinia 从零搭建(2) - tsconfig配置
    tsconfig配置项目代码同步至码云weiz-vue3-template关于tsconfig的配置字段可查看其他文档,如typeScripttsconfig配置详解tsconfig.json文件修改如下:{"compilerOptions":{"target":"ESNext",//将代码编译为最新版本的JS"useDefineForClassFields":tr......
  • Vite4+Typescript+Vue3+Pinia 从零搭建(1) - 项目初始化
    项目初始化项目代码同步至码云weiz-vue3-template前提准备1.node版本Node.js版本>=12,如果有老项目需要旧版本的,推荐用nvm管理node版本。PSC:\Users\Administrator>nvm--version1.1.11PSC:\Users\Administrator>nvmlist*16.20.2(Currentlyusing64-bit......
  • TypeScript export named default error All In One
    TypeScriptexportnameddefaulterrorAllInOneerror//✅functiondeclare//exportdefaultfunctionapp(){return`indexapp`;};//❌variabledeclare//exportdefaultconstapp=`indexapp`;//constapp=`indexapp`;//exportdefaultapp;......
  • NodeJS系列(15)- TypeScript (二) | 对象类型 (Object Types)
    在“NodeJS系列(14)-TypeScript(一)|安装TypeScript、常用类型”里,我们简单介绍了TypeScript的安装配置,讲解和演示了TypeScript常用类型。本文继续介绍TypeScript对象类型(ObjectTypes)。TypeScript:https://www.typescriptlang.org/(中文版:https://ts.nodejs.cn/)Micro......
  • NodeJS系列(14)- TypeScript (一) | 安装 TypeScript、TypeScript 常用类型
    JavaScript现在是有史以来最广泛使用的跨平台语言之一。JavaScript最初是一种用于向网页添加微不足道的交互性的小型脚本语言,现已发展成为各种规模的前端和后端应用的首选语言。虽然用JavaScript编写的程序的大小、作用域和复杂性呈指数级增长,但JavaScript语言表达不同代码......
  • TypeScript打包构建工厂
    TS开发工厂用于开发测试typescript代码片段或工具插件,可预览并编译成多种格式嵌入不支持ts的项目Developandtestyourtypescriptcodesortools.Previewandbuildtocommonjsandesnext.Projectsetupnodeversion>=16.x.xnpminstallCompilesandhot-......
  • typescript 中的 Promise 类型定义中为何忽略了错误处理的类型?
    在TypeScript中的Promise类型定义中忽略了错误处理的类型是因为Promise类型的设计初衷是用于处理异步操作的结果,即成功或失败。当Promise成功时,它会返回一个值;而当Promise失败时,则会抛出一个错误。在Promise的类型定义中,只关注了成功的结果类型,而忽略了错误处理的类型......
  • [学习笔记]TypeScript查缺补漏(二):类型与控制流分析
    @目录类型约束基本类型联合类型控制流分析instanceof和typeof类型守卫和窄化typeof判断instanceof判断in判断内建函数,或自定义函数赋值布尔运算保留共同属性字面量类型(literaltype)asconst作用类型约束TypeScript中的类型是一种用于描述变量、函数参数和函数返回值的特征的方......