요일 - 날짜 - 월 종류
9400 단어 tutorialtypescriptbeginners
Typescript
대신 Javascript
를 몇 번이나 사용했는지 기록을 유지한다고 가정해 보겠습니다.최종 코드를 사용할 수 있습니다in the playground.
const howHappyToUseTypescriptHistory = {
Thu29Jul: Infinity,
overall: Infinity
}
지금까지는 유형이 유추되었지만 금요일에는 어떻게 될까요? 다른 레코드를 추가하고 평균을 다시 계산해야 하며 유추된 유형 변경이 필요합니다. 그러한 구성을 입력하는 방법이 전혀 있습니까?
알고 보니 있습니다.
Typescript
v4는 이를 수행할 수 있는 강력한 기능을 제공합니다.평일 유형을 만드는 것부터 시작하겠습니다.
type DaysOfTheWeek = 'Mon' | 'Tue' | 'Wen' | 'Thu' | 'Fri' | 'Sat' | 'Sun';
이제 남은 일수에 따라 월을 입력합니다(2월 생략).
type ThirtyOneDaysMonths = 'Jan' | 'Mar' | 'May' | 'Jul' | 'Aug' | 'Oct' | 'Dec';
type ThirtyDaysMonths = 'Apr' | 'Jun' | 'Sep' | 'Nov';
모든 달은 29-30-31일을 가질 수 있으므로
Typescript
의 템플릿 리터럴을 사용하는 3가지 유형 세트입니다.type OneThroughNine = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
type OneThroughTwentyNine = `${0 | 1 | 2}${OneThroughNine}`;
type OneThroughThirty = OneThroughTwentyNine | '30';
type OneThroughThirtyOne = OneThroughThirty | "31";
이 시점에서 아마도 이제 일반 문자열을 사용하여 이러한 모든 문자열을
DayDateMonth
형식으로 함께 붙일 것이라고 추측했을 것입니다.type DayOfWeekDateMonth<DaysInMonth extends string, Months extends string> = `${DaysOfTheWeek}${DaysInMonth}${Months}`;
type DayDateMonth = DayOfWeekDateMonth<OneThroughTwentyNine, 'Feb'> | DayOfWeekDateMonth<OneThroughThirty, ThirtyDaysMonths> | DayOfWeekDateMonth<OneThroughThirtyOne, ThirtyOneDaysMonths>;
문자열에 대한 유형이 준비되면 다른 날짜의 데이터를 저장할 일반 레코드를 정의할 수 있습니다.
type DayDateMonthRecord<T> = {
[key in DayDateMonth]?: T;
};
매핑된 유형은 자체 속성이나 메서드를 선언하지 않을 수 있으므로
average
또는 다른 필드를 추가하려면 확장DayDateMonthRecord<T>
이 필요합니다.interface ListWithAverage<T> extends DayDateMonthRecord<T> {
average: number;
}
마지막으로 초기 개체를 입력할 수 있습니다.
const howHappyToUseTypescriptHistory: ListWithAverage<number> = {
Thu29Jul: Infinity,
overall: Infinity
}
이제 필요한 경우 intellisense를 사용하여 엄격한 타이핑을 수행할 수 있습니다. :)
Reference
이 문제에 관하여(요일 - 날짜 - 월 종류), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bwca/weekday-date-month-type-26j4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)