typescript 如何使用TS选择数组中对象值的类型

6gpjuf90  于 2022-11-18  发布在  TypeScript
关注(0)|答案(2)|浏览(286)

我想在我的代码中从key创建类型:

const arr = [{ key: "a", nnumber: 11 }, { key: "b", nnumber: 1 }];

function test<Keys['key'] extends keyof string>(keys: Keys): Keys[] {
    return arr.map((item) => item.key);
}

// should return "a", "b"
const tmp = test(arr);
//   ^?

有人能帮我创建类型为返回[“a”,“B”]。
谢谢你

dxxyhpgq

dxxyhpgq1#

让数组成为as const的常数型别,然后就可以撷取型别。

const arr = [{ key: "a", nnumber: 11 }, { key: "b", nnumber: 1 }] as const;

type foo = typeof arr[number]["key"]
  // ^? "a" | "b"
snz8szmq

snz8szmq2#

您的泛型参数应该代表下列索引键:

const arr = [{ key: "a", nnumber: 11 }, { key: "b", nnumber: 1 }] as const;

function test<K extends string>(keys: readonly { key: K }[]): K[] {
    return arr.map((item) => item.key as K);
}

const tmp = test(arr);
//   ^? ("a" | "b")[]

Playground

相关问题