В джеренике PlaceholdersFrom я думал использовать Record, но не соображу, как извлекать тип свойства:
Record<keyof T[K], >
Поэтому получилось
так.
Дублирую из песочницы:
type ObjectPlaceholders = {
props?: Record<string, string | number>;
data?: Record<string, string | number>;
}
interface IBlock extends ObjectPlaceholders {
data: {
name: string;
age: number;
},
props: {
address: string;
}
}
type PlaceholdersFrom<
T extends ObjectPlaceholders, K extends keyof ObjectPlaceholders
> = { [P in keyof T[K]]: T[K][P] }
const obj: PlaceholdersFrom<IBlock, 'props'> = {
address: 'ul Ivanova, 22'
}