Можно устранить дублирование в типах свойств через указание на State:
type TopNavState = {
userId: State['userId'];
pageTitle: State['pageTitle'];
recentFiles: State['recentFiles'];
};
Несмотря на то что код стал длиннее, изменение в типе pageTitle в State отразилось в TopNavState. Однако здесь все еще присутствуют повторы. Используйте отображенный тип:
type TopNavState = {
[k in 'userId' | 'pageTitle' | 'recentFiles']: State[k]
};
Наведение курсора на TopNavState покажет, что это определение, по сути, такое же, как и предыдущее (рис. 2.10).