extends {[k in T|string]?: any}>(data: U, keys: T[], replaceNotFoundWithNull: boolean = false): U{
return keys.reduce((map, key: T) => {
if (data.hasOwnProperty(key)){
map[key] = data[key];
} else if (replaceNotFoundWithNull){
map[key] = null;
}
return map;
}, {} as U);
}
Возможно баг. Вот так будет работать: function mapData<T extends string>( data: Record<T, any>, keys: T[], replaceNotFoundWithNull = false ): Record<T, any> { return keys.reduce((map, key) => { if (data.hasOwnProperty(key)) { map[key] = data[key]; } else if (replaceNotFoundWithNull) { map[key] = null; } return map; }, {} as Record<T, any>); }
Спасибо большое, помогло, ещё и посмотрел про другие utility как Record
Обсуждают сегодня