반응형
type alias: 타입도 변수에 담아쓰세요 type 키워드 써서
type alias
- 타입 변수
- 타입이 너무 길어지는 경우에 변수로 만들어서 간단하게 사용함
type alias 만드는 법
type Animal = string | number | undefined;
let 동물 :Animal = 'kim';
object 타입을 변수에 담아보자.
let 동물 :{ name: string, age: number } = { name: 'kim', age: 20 }
type이 기니까 type으로 만들자. 훨씬 더 깔끔해진다.
type Animal = {name: string, age: number};
let 동물 :Animal = {name: 'kim', age: 20}
type 변수 작명 관습
- 일반 변수와 차별화두기를 위해 영어 대문자로 시작한다 (Animal)
- 뒤에 Type을 붙인다 (AnimalType)
readonly
const 변수 잠깐 설명시간
const 출생지역 = 'seoul';
출생지역 = 'busan'; // 에러 발생.
근데 만약 출생지역에 object가 오게 된다면 바꿀 수 있다.
const 출생지역 = {region: 'seoul'};
왜냐하면 **const는 등호로 재할당을 막는 역할이다. object 수정은 자유롭게 가능**하다.
readonly: 자료 수정 막기
readonly를 붙이고 실수로 수정하면 에러를 내준다. 이제 절대로 바꿀 수 없다.
type Girlfriend = {
readonly name: string
}
const 여친 :Girlfriend = { // readonly가 됨
name: '엠버'
}
여친.name = '유라'; // 에러 발생. 바꿀 수 없음
타입스크립트 에러는 에디터 & 터미널에서만 존재함
실제 자바스크립트 파일에 가면 바꿔주고 있다. 타입스크립트는 그냥 에디터에서 잡아주는 경고사항이지, 실제 변환된 js파일은 에러가 없다.
object 속성 안에도 ? 사용 가능
type Girlfriend = {
name? :string
}
name 속성이 들어와도 되고, 안들어와도 된다.
name :string | undefined
이렇게 치는거랑 동일함.
type변수 -> 당연히 union type으로 합치기 가능
type Name = string;
type Age = number;
type Person = Name | Age; // union type
& 연산자로 object 타입 합치기(extend 하기)
type PositionX = { x: number };
type PositionY = { y: number };
type NewType = PositionX & PositionY // {x: number, y: number}
let position: NewType = {x: 10, y: 20}; //
같은 이름의 type 변수 재정의 불가능
type PositionX = {x: number};
type PositionX = number; // 에러 발생.
숙제
1. object 타입을 정의한 type alias 두 개를 & 기호로 합칠 때 중복된 속성이 있으면 어떻게 될까요?
➡️ 예제로 코드를 작성해봤다.
type A = {
a: string;
b: number;
};
type B = {
b: string;
};
type C = A & B;
const c: C = { a: "1", b: 2 }; // 에러 발생
Type 'number' is not assignable to type 'never'.ts(2322)
06_assign-1.ts(3, 3): The expected type comes from property 'b' which is declared here on type 'C'
중복된 속성이 있을 때 합치면 안된다! 에러 발생함.
2. 다음 조건을 만족하는 타입을 만들어봅시다.
- 이 타입은 object 자료형이어야합니다.
- 이 타입은 color 라는 속성을 가질 수도 있으며 항상 문자가 들어와야합니다.
- 이 타입은 size 라는 속성이 있어야하며 항상 숫자가 들어와야합니다.
- 이 타입은 position 이라는 변경불가능한 속성이 있어야하며 항상 숫자가 담긴 array 자료가 들어와야합니다.
type alias로 만들어보셈
➡️
type Data = {
color?: string;
size: number;
readonly position: number[];
};
3. 다음을 만족하는 type alias를 연습삼아 간단히 만들어보십시오.
- 대충 이렇게 생긴 object 자료를 다룰 일이 많습니다. **{ name : 'kim', phone : 123, email : 'abc@naver.com' }**
- object 안에 있는 **이름, 전화번호, 이메일** 속성이 옳은 타입인지 검사하는 type alias를 만들어봅시다.
- 각 속성이 어떤 타입일지는 자유롭게 정하십시오.
➡️
type Person = {
name: string;
phone: number;
email: string;
};
4. 다음을 만족하는 type alias를 만들어보십시오.
- 숙제2와 똑같은데 이번엔 **이름, 전화번호, 이메일, 미성년자여부** 속성을 옳은 타입인지 검사하는 type alias를 만들어봅시다.
- 미성년자 여부 속성은 true/false만 들어올 수 있습니다.
- 멋있게 숙제2에서 만들어둔 type alias를 재활용해봅시다.
➡️
type Person = {
name: string;
phone: number;
email: string;
};
type Adult = {
isAdult: boolean;
};
type Information = Person & Adult;
반응형
'Front-End: Web > TypeScript' 카테고리의 다른 글
[코딩애플] ts part 1-8. method types (0) | 2022.10.22 |
---|---|
[코딩애플] ts part 1-7. Literal Types (0) | 2022.10.22 |
[코딩애플] ts part 1-5. Narrowing & Assertion (0) | 2022.10.22 |
[코딩애플] ts part 1-4. function parameter & return (0) | 2022.10.22 |
[코딩애플] ts part 1-3. 타입을 미리 정하기 애매할 때(union type, any, unknown) (0) | 2022.10.22 |