如何仅为接口设置特定类型



address为映射。它的数据库中有很多keys。我不想把所有的keys传递给我的其他API。

export interface BookingModel {
address: Address
}

我只想把这三种类型传递给API

export interface Address {
location: string,
flatNo: string,
id: string
}

我像这样传递地址细节。

{
'addressDetails': bookingModel.address,
}

但是addressDetails有所有的键,而不是指定的键。

你可以写一个pick函数,以一种类型安全的方式精简你的全脂地址:

const pick = <T, K extends keyof T>(obj: T, ...keys: K[]): Pick<T, K> => {
const keySet = new Set(keys);
return Object.fromEntries(Object.entries(obj).filter(
([k]) => keySet.has(k as K))) as Pick<T, K>;
}

然后使用:

{
addressDetails: pick(bookingModel.address, 'location', 'flatNo', 'id'),
}

最新更新