Все, что вам нужно сделать здесь:
interface StatisticsResult extends NumberDictionary {
mean: number;
mode: number;
median: number;
}
и теперь StatisticsResult
будет использовать указанную подпись индекса. TypeScript не заботится о том, чтобы вы добавляли новые ключи, он заботится только о том, чтобы вы назначали тип с подписью индекса для типа без такового.
Вы также можете привести results
, хотя это гораздо более хакерски, поскольку сначала нужно привести к unknown
(если вы этого не сделаете, ts пожалуется, что ваши типы не перекрываются из-за индекса признак несоответствия) и вид поражения цели:
logNumbers((results as unknown) as NumberDictionary);
И, наконец, хотя вы и сказали, что не хотите изменять StatisticalResult
, вы также можете определить сигнатуру индекса (что, как я понимаю, также отрицает цель иметь ваш тип NumberDictionary
в любом случае:
interface StatisticsResult{
[key: string]: number;
mean: number;
mode: number;
median: number;
}