【发布时间】:2018-11-15 23:49:12
【问题描述】:
假设我们有以下 TypeScript 代码:
type ForwardVal<T> = {
[K in keyof T]: string;
};
type ForwardKeyOf<T extends string | number | symbol> = {
[K in T]: string;
};
type ByObj = ForwardVal<number[]>; // string[]
type ByKeyOf = ForwardKeyOf<keyof number[]>; // { length: string, toString: string, ... }
type foo = ByObj['push']; // (...items: string[]) => number
type bar = ByKeyOf['push']; // string
为什么foo 不是字符串,而bar 是?转发keyof obj 和从转发obj 本身获得Key in T 并在映射类型内部执行Key in keyof T 有什么区别?
T 参数不是被它的给定值替换了吗?
【问题讨论】:
标签: typescript generics type-alias