我有一个像这样的界面(但有超过 20 个字段)
export interface HouseDetails {
title: string | undefined;
url: URL;
address?: string;
logo?: URL;
price?: number;
sq_meters?: number;
}
我想生成一条带有
HouseDetails
键的记录,但其所有值都设置为默认值(例如,空字符串 ""
)。这是我尝试过的代码,但是当我将其打印到控制台时,它是一个空对象:
function generateDefaultMapping<T extends Object, D>(default_value: D): Record<keyof T, D> {
return Object.fromEntries(Object.keys({} as T).map((key) => [key, default_value])) as Record<keyof T, D>;
}
// Use the function to create a default mapping for HouseDetails
const default_mapping<Record<keyof HouseDetails, string> = generateDefaultMapping<HouseDetails, string>("");
console.log(default_mapping) // {}
我认为问题是这不像 C++ 模板那样工作,但是,有什么办法可以做到吗?