我是靠谱客的博主 含糊棉花糖,最近开发中收集的这篇文章主要介绍一个 TypeScript keyof 泛型用法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

平时工作自认为有 Swift Rust 经验, 所以不需要看 TypeScript 泛型方面的应用, 总以为大同小异, 拒绝看文档学语言, 从我做起. 今日看到一个用上泛型的 pluck 函数

function pluck<T, K extends keyof T>(o: T, names: Array<K>): T[K][] {
return names.map(n => o[n]);
}
复制代码

有点懵逼, 查了一下 keyof 的应用.

const a = {
a: 1,
b: 2,
};
keyof typeof a; // 'a' | 'b'
class A {
c: number;
d: number;
}
keyof A; // 'c' | 'd'
复制代码

哦呼, 完蛋, 直接生成一个联合属性, 所以 pluck 函数 K 就是把 T 属性名作为字面量类型. K 就是 T 的属性名, 所以 T[K][] 这样的类型也好理解了.
至于字面量类型就是 TypeScript 可以把一个字符串当作一个类型

const a: 'a';
复制代码

TypeScript 的类型系统还是蛮好玩的, 嗯哼就这样吧.

最后

以上就是含糊棉花糖为你收集整理的一个 TypeScript keyof 泛型用法的全部内容,希望文章能够帮你解决一个 TypeScript keyof 泛型用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部