[Typescript] 나와 함께 공부하는 TS(1) - 기본형
최근에 팀에 새롭게 한 분의 온보딩 스터디 프로젝트를 같이 리뷰하는 시간을 냈는데, 클래스 구현부터 Typescript를 표시로 걸 모니터 그 동안의 나를 반성하게 되었습니다.😂
다시 기초부터 빤히 공부하면서, 유형 장부 기록만 ts를 쓰는 수준이 아닌 ts의 장점을 활용하는 옷을 머리에 쓰고 이렇게 ts스터디를 시작하게 되었습니다.
문자열 리터럴 유형
type All = 'all';
let selectAll: All = 'all';
selectAll = 'other'; //error
조합 유형
Union Type은 평소에 일찍 사용중이다. 일반적으로 여러 문자열 유형을 거의 사용할 때 사용했습니다. 아래 예제처럼 서로 다른 유형도 Union Type으로 선언을 할 수 있고 또 걸 수도 있습니다.
type Id = number | string;
function printId(id: Id) {
if (typeof id === "string") {
console.log(id.toUpperCase());
} else {
console.log(id);
}
}
식별된 유니온 유형
type Circle = {
kind: 'circle',
radius: number
}
type Square = {
kind: 'square',
x: number
}
type Triangle = {
kind: 'triangle',
x: number,
y: number
}
type Shape = Circle | Square | Triangle;
function area(s: Shape) {
if (s.kind === "circle") { // discriminate type
return Math.PI * s.radius * s.radius;
} else if (s.kind === "square") { // discriminate type
return s.x * s.x;
} else {
return (s.x * s.y) / 2;
}
}
열거형 유형
enum Direction {
Up = 1, // 시작하는 숫자를 할당해 줄 수 있음(default는 0)
Down,
Left,
Right,
}
Google링 하다보니, Enum type은 안정적이거나 말하는 것은 꽤 쟁쟁합니다.
[이유]
관련 링크
Tree-Shaking
, const enum
등 설명할 컨셉이 빤 다음편으로.. type enum DAYS = {
Mon,
Tue,
Wed,
Thur,
Fri,
Sat,
Sun
}
let day = DAYS.Mon;
day = DAYS.Wed;
day = 10; // error지만 compile시 error가 발생하지 않음!(= type이 보장되지 않는다)
Enum type은 Union Type으로 복제가능하기 때문에 Union Type을 사용하는 것이 권장되는 분위기였다.
그러나 팀의 개발 환경이나 가독성 측면에서 열거형을 사용하는 것이 더 나를 좋아할 만큼 충분히 설명하는 이유가 있다면 채택해서 사용해도 큰 문제는 반대 글도 보고 있습니다.
TMI:
사실 우리 팀에서도 Enum Type을 꽤 사용중이다. (엄청난 합리적인 이유가 있을 것으로 예상되는...)
Reference
이 문제에 관하여([Typescript] 나와 함께 공부하는 TS(1) - 기본형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nily/typescript-study-ts-with-me-1-basic-type-2i2n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)