export interface HTMLButtonProps {
readonly btnType?: BtnType;
}
export const Button = styled.button<HTMLButtonProps>`
// btnType becomes BtnType | undefined
${({ btnType }) => {}
`;
Button.defaultProps = {
btnType: BtnType.Normal
};
При добавлении ?
в интерфейс prop, сообщая машинописному тексту, что это необязательная prop, вместо этого тип становится BtnType | undefined
. Поскольку я пытаюсь сделать изнуряющее выражение switch, | undefined
продолжает портить его, наряду с другими вещами, где я вынужден использовать синтаксис as
.
Кроме того, так как я установив значение в defaultProp
для btnType
, мы будем предполагать, что это свойство никогда не будет undefined
(несмотря на то, что оно может быть undefined
при передаче в качестве реквизита, что нормально).
Как я могу сказать машинописи, что btnType
является только типа BtnType
без необходимости делать as BtnType
везде в коде или создавать новую переменную из существующего параметра