textarea в зависимости от приходящего пропса. Соответственно когда компонент input он имеет один набор пропсов, если textarea - другой.
Я определяю типы:
type ITextFieldCommonProps = {
disabled?: boolean;
required?: boolean;
};
type ITextProps = ITextFieldCommonProps & {
as?: 'input';
mask?: string;
maskChar?: string;
};
type ITextAreaProps = ITextFieldCommonProps & {
as?: 'textarea';
};
// итоговый тип
type ITextFieldProps = ITextProps | ITextAreaProps;
Проблема в том, что в итоговом типе у меня есть только общие типы свойств и as, но вот mask и maskChar - отсутствуют
as: 'input' | 'textarea' | 'undefined';
required: 'boolean' | undefined;
mask: // нет такого типа
Потому что дает доступ только к тем полям которые гарантировано будут в типе, а к тем что в или можно достучаться только в ифе с тайпгвардом
Обсуждают сегодня