gpt4 book ai didi

typescript 推断返回的数组类型元素

转载 作者:行者123 更新时间:2023-12-05 02:11:45 26 4
gpt4 key购买 nike

我有以下功能:

const data = {
id: 1,
name: '',
}

type keysType = keyof(typeof data);

function getKeysValues(...keys: keysType[]) {
return keys.map(k => data[k]);
}

const value = getKeysValues('id', 'name');

value 的类型是(string | number)[]。如何根据传递的 key 将其更改为动态?因此,在上述情况下,我希望类型为 [number, string]

最佳答案

在元组上使用映射类型 TypeScript 3.1

const data = {
id: 1,
name: '',
}

type Data = typeof data;
type DataKeysType = keyof(typeof data);
type DataFieldType<T> = T extends DataKeysType ? Data[T] : never;

type MappedDataTuple<T extends DataKeysType[]> = {
[K in keyof T]: DataFieldType<T[K]>;
}

function getKeysValues<T extends DataKeysType[]>(...keys: T): MappedDataTuple<T> {
return <any>keys.map(k => data[k]);
}

// const value: [number, string]
const value = getKeysValues('id', 'name');

关于 typescript 推断返回的数组类型元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56947620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com