TypeScript中的keyof、in操作符的一些用法

原创 野人  2022-04-04 09:54  阅读 41 次

前几天面试的时候,被问到一道题,没回答出来,卡在了对TypeScript中的keyof、in操作符不熟悉的原因下。

而后面复盘的时候,我多次去TypeScript的官网查看关于keyof、in操作符相关资料,一直没有找到,后面才反应过来,我看的是中文版TypeScript的官网,而不是真正的TypeScript的官网,而中文版TypeScript的官网信息更新早已停滞了,这。。。,技术更新的太快了,不学习真的要落后啊!!!

然后就果断翻看了TypeScript的真正的官网:https://www.typescriptlang.org/

初步是了解的差不多了,所以就写文章记录下,当然了如果本文说的有错的地方,请大家指教,谢谢。

keyof

就跟它的名字意思差不多,取的是对象中的key值,有点像JavaScript中的Object.keys方法,不过这个keyof不能用于取enum(枚举)类型的key,我就犯了这样的基本用法错。

相关用法案例,如下

interface IPerson {
  name: string;
  age: number;
  gender: string;
}
type P = keyof IPerson; // "name" | "age" | "gender"

更多代码实例大家可以到官方这里查看:https://www.typescriptlang.org/docs/handbook/2/keyof-types.html

in

in用于取联合类型的值。主要用于数组和对象的构造。

type name = 'firstName' | 'lastName';
type TName = {
  [key in name]: string;
};//{firstName:string,lastName:string}

关于这个in的操作符,我没不到专门介绍这个in操作符的章节,找到是一个叫Mapped Types与之有关联的,而且这个in大多数情况下会跟keyof搭配使用,具体的大家可以看官方的实例:https://www.typescriptlang.org/docs/handbook/2/mapped-types.html

参考文档

https://www.cnblogs.com/plBlog/p/15562806.html

https://pjchender.blogspot.com/2021/08/typescript-mapped-type.html

本文地址:https://www.yerenwz.com/6041.html
版权声明:本文为原创文章,版权归 野人 所有,欢迎分享本文,转载请保留出处!
PREVIOUS:已经是最后一篇了

发表评论