在 typescript 中,我可以创建一个类型安全的对象键数组,如下所示:
export type Keys<T> = [keyof T][];
export const keys = <T>(o: T): Keys<T> => Object.keys(o) as any;
const k = keys(a);
但是我如何为这些值创建一个相似的类型:
export type Values<T> = [T][keyof T];
// Type 'keyof T' cannot be used to index type '[T]'.
最佳答案
您需要索引到 T
,而不是 [T]
:
type Values<T> = T[keyof T][]; // or Array<T[keyof T]>
type Foo = { a: number, b: string };
type FooValues = Values<Foo>; // (string | number)[]
[T]
是具有单个 T
元素的元组,因此您最初的尝试是尝试使用 T
的“索引到”元组键 - 因此错误。
关于typescript - 在映射类型中使用 keyof 以返回 typescript 中的值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62338603/