TypeScript 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 keyof的更多相关文章
- TypeScript keyof typeof All In one
TypeScript keyof typeof All In one keyof typeof refs https://www.typescriptlang.org/docs/handbook/re ...
- [TypeScript] Query Properties with keyof and Lookup Types in TypeScript
The keyof operator produces a union type of all known, public property names of a given type. You ca ...
- Angular2+typescript+webpack2(支持aot, tree shaking, lazy loading)
概述 Angular2官方推荐的应该是使用systemjs加载, 但是当我使用到它的tree shaking的时候,发现如果使用systemjs+rollup,只能打包成一个文件,然后lazy loa ...
- angular2 学习笔记 (Typescript)
1.接口奇葩验证 interface Abc { name : string } function abc(obj : Abc) { } let ttc = { name: "adad&qu ...
- TypeScript 零基础入门
前言 2015 年末看过一篇文章<ES2015 & babel 实战:开发 npm 模块>,那时刚接触 ES6 不久,发觉新的 ES6 语法大大简化了 JavaScript 程序的 ...
- TypeScript中的怪语法
TypeScript中的怪语法 如何处理undefined 和 null undefined的含义是:一个变量没有初始化. null的含义是:一个变量的值是空. undefined 和 null 的最 ...
- JavaScript 和 TypeScript 交叉口 —— 类型定义文件(*.d.ts)
在 <从 JavaScript 到 TypeScript 系列> 文章我们已经学习了 TypeScript 相关的知识. TypeScript 的核心在于静态类型,我们在编写 TS 的时候 ...
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- Typescript高级类型与泛型难点详解
最近做的TS分享,到了高级类型这一块.通过琢磨和实验还是挖掘出了一些深层的东西,在此处做一下记录,也分享给各位热爱前端的小伙伴. 其实在学习TS之前就要明确以下几点: 1. typescrip ...
- 如何编写 Typescript 声明文件
使用TypeScript已经有了一段时间,这的确是一个好东西,虽说在使用的过程中也发现了一些bug,不过都是些小问题,所以整体体验还是很不错的. TypeScript之所以叫Type,和它的强类型是分 ...
随机推荐
- super()和super(props)
一.ES6类 在ES6中,通过extends关键字实现类的继承,方式如下: class sup { constructor(name) { this.name = name } printName() ...
- CentOS7.9 systemctl
目录 命令格式 语法 加载配置文件 关机和开机 unit 文件存放位置 unit 格式说明 service unit file 文件构成部分 unit 段的常用选项 service 段的常用选项 in ...
- 这10款VS Code神仙插件,嵌入式程序员必备
大家好,我是知微! 嵌入式软件开发工程师平时可能更多的是使用Source Insight.Keil.IAR来阅读代码,写代码. VSCode大家都听说过,功能十分强大,而且免费! 或许是因为这款软件上 ...
- 基于开源PolarDB-X打造中正智能身份认证业务数据基座
简介: 在10月25日由阿里云开发者社区.PolarDB开源社区.infoQ联合举办的「开源人说」第三期--<数据库PolarDB专场>沙龙上,中正智能科技有限公司平台软件部研发总监韩毅带 ...
- 史上最强《Java 开发手册》泰山版王者归来!
阿里妹导读:潜力修炼一年之久的<Java 开发手册(泰山版)>今天发布!此次共计新增 34 条规约,修改描述 90 处,其中错误码规则更是第一次提出完整的解决方案,大家参考错误码示例表,欢 ...
- 揭秘!阿里实时数仓分布式事务Scale Out设计
简介: Hybrid Transaction Analytical Processing(HTAP) 是著名信息技术咨询与分析公司Gartner在2014年提出的一个新的数据库系统定义,特指一类兼具O ...
- 一文带你了解企业上云数据分析首选产品Quick BI
简介: 阿里云Quick BI再度入选,并继续成为该领域唯一入选魔力象限的中国企业,文章将为大家详细介绍上云数据分析首选产品 Quick BI的核心能力. 日前,国际权威分析机构Gartner发布20 ...
- Hologres揭秘:高性能原生加速MaxCompute核心原理
简介: Hologres技术揭秘系列持续更新中,本期我们将带来Hologres高性能原生加速查询MaxCompute的技术原理解析. Hologres(中文名交互式分析)是阿里云自研的一站式实时数仓, ...
- 从操作系统层面分析Java IO演进之路
简介: 本文从操作系统实际调用角度(以CentOS Linux release 7.5操作系统为示例),力求追根溯源看IO的每一步操作到底发生了什么. 作者 | 道坚来源 | 阿里技术公众号 前言 本 ...
- 如何玩转 WebGL 并行计算
简介: 如今在 Web 端使用 WebGL 进行高性能计算已有不少实践,例如在端智能领域中的 tensorflow.js,再比如可视化领域中的 Stardust.js. 作者 | 沧东 来源 | ...