해말그미의 코딩공부

타입스크립트 기초2 본문

카테고리 없음

타입스크립트 기초2

해말그미 2023. 5. 31. 23:52

타입을 미리 정하기 애매할 때

 

union type

any type

unknown type


🌹 union type

 

let 회원 :number | string = 666;

타입 2개 이상 합친 새로운 타입만들기

=> 666 처럼 할당을 하면 회원이라는 변수는 number로 확정이 된다.

 

문자나 숫가가 들어갈 수 있는 array나 object를 만들려면? =>

 

let 회원들 :(number | string) [ ] = [1,'2',3];

이렇게 하면된다.

let 회원들 :number | string [ ]

소괄호를 안쳐주면 123이라는 숫자만 또는 ['문자1','문자2'] 같이 올 수 있는 타입이 된다.

 

object를 만들려면?

let 오브젝트 :{ a : string | number } = { a : 123 }

 



🌹 any type

 

위의 union type 이 귀찮다! 그럼 any를 쓰면 된다.

let 이름 :any;
이름 = 123;
이름 = true;

처럼 어떤게 와도 된다.

 

이 타입은 모든 자료형 허용해주기 때문에 타입스크립트 쓰는 의미가 없어진다. => 타입관련 버그 잡아주지 못하기 때문에


🌹 unknown type

let 이름 :unknown;
이름 = 123;
이름 = {};

any랑 비슷한데 좀 더 안전하다.

let 변수1 :string = 이름;

이렇게 했을 경우 이름에 {}가 들어오면서 에러가 뜬다.

하지만 any 타입은 다른 타입에 들어가는 것도 허락해준다. 그래서 unknown 이 더 안전하다.

let 이름 :unknown;
이름 - 1

unknown은 number타입이 아니기 때문에 계산이 안된다.

타입스크립트는 엄격하기 때문에 수학연산도 타입이 맞아야 한다.

 

자바스크립트에서 'yun' + 1은 yun1 처럼 허용이 됐다.

let 나이 :string | number;
나이 + 1;

위에서는 타입이 맞는데 왜 +1이 안될까??

타입스크립트는 엄격한 것을 좋아한다.

string 타입 +1(허용됨)

number 타입 +1(허용됨)

string | number 타입 +1(허용됨)  =>union type은 새로운 타입을 만들어내는 것이라서 안된다.


타입지정 연습하기

let 학교 : {
    score : (number|boolean)[],
    teacher : string,
    friend : string | string[]
}

= {
    score : [200, 97, 66],
    teacher : 'yun',
    friend : 'hee'
}
학교.score[4] = false;
학교.friend = ['Lee', 학교.teacher]

🌹 함수에 타입 지정하는 법 & void 타입

Comments