반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- gitsquash
- 리액트구글애널리틱스
- 시스템설계면접예시
- 헤드퍼스트전략패턴
- s3이미지다운로드됨
- 리팩토링2판4장
- react-ga
- git commit 협업
- awss3
- 가상면접3장
- 가상면접2장
- 시스템설계면접
- cypress React
- 시스템설계면접팁
- Git commit 합치기
- FirebaseAnalytics
- git commit merge
- 디자인패턴
- formik react-query submitting not working
- 시스템설계
- git squash
- 전략패턴
- react
- 테스트코드책
- file not found Error
- cypressBDD
- 리팩터링2판테스트
- formik submitting not working
- 가상면접으로대규모시스템
- 시스템설계방법
Archives
- Today
- Total
mingg IT
[기타] ChatGPT 와 친해지기 (3) 본문
오늘은 TypeScript 관련해서 질문을 해보려고 한다.
export type CalendarFilterOptionType =
| { type: 'recentyear' | 'thisweek' | 'thismonth' }
| { type: 'custom' | 'thistoday'; from: Dayjs; to: Dayjs };
이미 만들어져있는 CalendarFilterOptionType type에서 recentyear, thisweek, thismonth, custon, thistoday 들만 뽑아서 타입으로 사용하고 싶었다.
이런식으로 써도 되지만, 이러면 수정이 일어났을 때 CalendarFilterOptionType, SearchTimeSelect 두 가지를 수정해주어야 한다.
interface SearchTimeSelect {
hour: number;
radio: 'recentyear' | 'thisweek' | 'thismonth' | 'custom' | 'thistoday';
setHour: React.Dispatch<React.SetStateAction<number>>;
}
ChatGPT에게 물어보자.
제법 그럴싸하게 대답해준다. 허나 저런식으로 사용하게 되면 'custom', 'thistoday' 에 걸어놓았던 from, to 의 타입이 엄격하게 검사가 되지 않는다.
ChatGPT에게 다시 물어보았다.
오! 내가원했던 답을 알려준다. 이런식으로 사용하면 CalendarFilterOptionType 타입에서 'recentyear' | 'thisweek' | 'thismonth' | 'custom' | 'thistoday'; 이것들을 뽑아서 사용할 수 있다.
export type CalendarFilterOptionOnly = CalendarFilterOptionType['type'];
이런식으로 훨씬 깔끔하게 사용할 수 있다.
// 수정 전
interface SearchTimeSelect {
hour: number;
radio: 'recentyear' | 'thisweek' | 'thismonth' | 'custom' | 'thistoday';
setHour: React.Dispatch<React.SetStateAction<number>>;
}
// 수정 후
interface SearchTimeSelect {
hour: number;
radio: CalendarFilterOptionType['type'];
setHour: React.Dispatch<React.SetStateAction<number>>;
}
'기타' 카테고리의 다른 글
ChatGPT 와 친해지기 (4) (0) | 2023.02.15 |
---|---|
[VsCode] 프론트엔드 개발자 유용한 플러그인 모음 (0) | 2023.02.10 |
[기타] ChatGPT 와 친해지기(2) (0) | 2023.02.07 |
[기타] ChatGPT 와 친해지기(1) (1) | 2023.02.06 |
2022년 회고와 2023년 목표 (1) | 2022.12.30 |
Comments