为什么在使用类型映射时必须在类型前面添加“ extends keyof”

时间:2019-09-26 06:24:00

标签: javascript typescript

下面是我的代码:

type SelectProperties<T, K extends keyof T> = {
    [P in K]: T[P]
};

但是如果我将代码更改为:

type SelectProperties<T, K> = {
    [P in K]: T[P]
};

然后它无法编译,我认为原因可能是如果我们不使用TK extends keyof T可能没有有效的属性名称,这很公平,这是有道理的。

但是,如果我有如下代码,为什么它仍然无法编译:

type SelectProperties<K> = {      //doesn't compile
    [P in K]: any
};

它在代码和逻辑上看起来非常有效,那么为什么不编译呢?

0 个答案:

没有答案