interface 정의 시 I-prefix를 권장하지 않는 이유를 읽어보니 헝가리안 표기법을 사용하는 이점이 더 이상 없으며 이름으로부터 타입을 유추 가능해지기 때문에 캡슐화의 원칙에 위배된다는 이유 등으로 더 이상 사용하지 않는다고 한다.
1번과 2번을 고려하여 App.tsx 에 적어주었던 인터페이스의 위치를 옮기고 재네이밍 해주었다.
export interface IDateProps {
year: string;
month: string;
day: string;
yoil: string;
}
export interface TodoHeaderProps {
year: string;
month: string;
day: string;
yoil: string;
}
래퍼 객체 타입을 지양해야하는 이유 를 참고했다.
const [year, month, day, yoil]: Array<string> = moment().format("YYYY-MM-DD-dddd").split("-");
const [isOpenAdd, setIsOpenAdd] = useState<Boolean>(false);
const [year, month, day, yoil]: string[] = moment().format("YYYY-MM-DD-dddd").split("-");
const [isOpenAdd, setIsOpenAdd] = useState<boolean>(false);
타입스크립트가 생각보다 타입을 잘 추론해준다는 것은 알고 있었는데 그래도 다 써주는게 좋지 않을까? 해서 써줄 수 있는 타입들은 전부 써주었다ㅎㅎ
하지만 가독성 등의 이유로 타입스크립트 자체에서 추론이 가능한 것들은 제거하는 게 좋다고 한다.
똑똑한 타입스크립트가 return 을 보고 알아서 잘 추론해주는 중
자바스크립트에서 쓰던 코드랑 똑같아졌다.
좀 더 깔끔한 코드가 되지 않았을가....!?