определяет, что у сущности может быть любой тип, но этот тип должен быть унаследован от конкретного типа?
Прям наследование не проверяется, в ts структурная типизация Можешь точнее задачу, потому что это может быть и extends в дженерике да и просто интерфейс
instanceof
export interface CommonProps<T extends SbEditableContent> { blok: T; } export type ReactDynamicComponent<T extends SbEditableContent> = FC< CommonProps<T> >; export const Components: Record<string, ReactDynamicComponent<any>> = { commonHeader: SbHeaderComponent, commonFooter: SbFooterComponent, typographyGeneral: SbTypographyGeneral, linkItem: SbLinkItem, imageLinkItem: SbImageLinkItem, buttonLarge: SbButtonLarge, landingGetStarted: SbGetStarted, mainFeatures: SbMainFeatures, bigCarouselDiamond: SbCarousel, recognition: SbRecognition, imageWithTestimonials: SbImageWithTestimonials, expertsSpecialists: SbExpertsSpecialists, performWebHero: SbPerformWebHero, typographyRichText: SbTypographyRichText, }; Usage: const SbHeaderComponent: ReactDynamicComponent<HeaderBlok> = ({ blok }) => {return} export interface HeaderBlok extends SbEditableContent { linksBlock: string[] promotionalBlock: string[] sectionsBlock: string[] show_promotional: boolean; } export interface SbEditableContent { _uid: string _editable?: string component: string [index: string]: any } Ну задача в том, чтобы избавиться от any )
Record подразумевает одинаковый тип для всех значений по ключам. Они одинаковые?
Нет, их объединяет только то, что они наследуются от одного интерфейса. Так, я понял, что Record я пользуюсь не правильно )
ну тогда Record<string, Interface>
Обсуждают сегодня