// 확장이 어려운 코드
const Input = styled.input`
// styling
`;
const Input = ({
type,
value,
onChange,
}) => {
return (
<Input type={type} value={value} onChange={onChange}>
)
}
// props 가 고정 되어있다
// 확장하기 쉬운 코드
const Input = styled.input<{ isValid?: boolean }>`
// styling
// error styling
`;
interface Props extends HTMLAttributes<HTMLInputElement> {
// 타입도 input 기본 속성을 확장 시켜서 확장 가능성을 높임
isValid?: boolean;
}
const Input = ({ isValid, ...props }: Props) => {
return (
<Input {...props} isValid={isValid}>
)
}
안좋은 프로그래머는 코드에 대해 걱정한다. 좋은 프로그래머는 데이터 구조와 관계에 대해 걱정한다” – 리누스 토발즈