typescript - 在映射类型中使用 keyof 以返回 typescript 中的值数组

标签 typescript

在 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)[]

Playground


[T] 是具有单个 T 元素的元组,因此您最初的尝试是尝试使用 T 的“索引到”元组键 - 因此错误。

关于typescript - 在映射类型中使用 keyof 以返回 typescript 中的值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62338603/

相关文章:

javascript - 仅将第一个返回值打印到 Angular2 App 中的 View

javascript - Angular2 和 simpleheat 插件

javascript - 在 TypeScript 中使用第三方 js 文件

javascript - 在 ag-grid 中显示来自服务器的数据

typescript - 对数组使用字符串索引可以避免类型安全?

angular - 你将如何从函数返回一个 Observable<T>

reactjs - 通用 Typescript 类型 + React hook

javascript - 热修复 "Type ' 字符串'不可分配给类型 'T'“?

Angular 2 : Remove class if root route not active

javascript - 有没有办法在 TypeScript 上使用没有 d.ts 定义的 npm 包