【发布时间】:2022-01-15 20:22:20
【问题描述】:
这是来自 this tuturial 的 Typescript 的 Pick 实用程序类型的基本实现
type ObjectWithKeys<T, K extends keyof T> = {
[P in K]: T[P];
};
我不明白它的作用,但我发现 K extends keyof T 的使用有点令人困惑。我们要确保 K 是联合类型 keyof T 的成员(或成员联合)。它永远不会“扩展”它,那么为什么在这里使用extends 运算符呢?
Typescript 是否缺少运算符,这是当前最好的选择吗?
【问题讨论】:
-
这是说
K应该分配给keyof T的打字稿方式。例如:type Result = 'foo' extends 'foo' | 'bar' ? true : falseResult将是truetypescriptlang.org/play?#code/… -
@AlekseyL 似乎又回到了前面,我要疯了吗?感觉就像它应该是例如
'foo' isIn 'foo' | 'bar' -
@WillJenkins - 不,但工会就是这样。 :-)
-
很高兴你问了这个问题,让我对一直困扰我的事情深思熟虑,真的很有用。
-
一点也不傻。 当条件类型作用于泛型类型时,它们在给定联合类型时变得可分配,这意味着条件将分别应用于每个联合成员,结果将被打包到联合中。还要注意
extends在两个不同的特性中被重用:1 - 泛型类型约束和 2 - 条件类型。
标签: typescript types