본문 바로가기
TypeScript

[TS] 타입스크립트의 타입들(2)

by Meaning_ 2022. 6. 26.
728x90
반응형

read-only 속성

 

name에 readonly 속성을 넣어줬는데 name을 수정하려고 하면 TS가 에러메세지를 전달할 것 이다.

약간 c++의 접근제어 지시자 느낌이라고 생각하면 될 듯하다. 

 

자 다시 복습해보자. name: string은 매개변수 타입이 string이라고 지정해준 것이고

콜론 다음에 Player는 리턴 타입이 Player라고 지정해준 것이다. 

 

name에 접근하려고 하면 타입스크립트가 에러메세지를 보낸다. 

 

readonly가 붙지 않았을 때는 배열에 push가 가능하다.

readonly 속성이 들어가면 push가 불가능하다. 

filter나 map은 가능하다. 이것은 배열을 바꾸지 않기 때문이다.

 

Tuple

 

튜플은 array를 생성하게 한다. 최소한의 길이를 가져야 하고 특정 위치에 특정 타입이 있어야 한다.

 

타입스크립트 식으로 배열을 선언해주자. (자바스크립트는 타입 설정x,타입스크립트는 타입 설정해야함)

 

이런식으로 배열을 선언하는 방법도 있지만! 이러면 배열에 string밖에 못들어 간다.

 

이 배열에는 string,number,boolean을 같이 넣으려면 어떻게 해야할까?

 

최소 원소의 개수가 3개이고 string number boolean순으로 배열에 넣어야 한다.

이것을 사용하면 항상 정해진 갯수의 요소를 가져야 하는 array를 지정할 수 있다.

 

가끔 API가 object를 주지 않고 이런 배열을 줄 수도 있다. 

 

튜플에도 readonly를 줄 수 있다.!!

 

다른 타입들 - undefined,null,any

 

undefined면 undefined가 되고 null이면 null이 된다!

 

++) undefined: 아무값도 받지 않은 초기상태 -> 값자체가 없다!

++) null: 빈값을 넣어준 객체 자료형 

 

가끔 선택적 타입을 사용하곤 하는데 이전에 봤던 예제 중에 

어떤 Player객체는 age라는 속성을 가질 수도 있고 가지지 않을 수도 있다면 그런 optional한 기능을

물음표를 통해 해결해줬다.

이때 이 age의 타입은 number 또는 undefined이다. 

 

any는 비어있는 값을 의미한다. any는 타입스크립트로부터 빠져나오고 싶을 때 쓰는 타입이다.

any는 말그대로 아무거나 될 수 있다. any의 사용은 타입스크립트의 보호장치를 잃어버릴 수도 있다는 단점이 있다. 

 

이렇게 말도 안되는게 가능해진다. 그래서 any를 쓰는것을 추천하지는 않는다. 

 

 

unknown

 

타입스크립트에서 중요한 것은 TypeChecker와 소통하는 것이다. 그렇다면 어떤 타입인지 모르는 변수는 TypeScript에게 어떻게 말해줘야할까? 

이때는 unknown이라는 타입을 쓸 수 있다. 변수의 타입을 미리 알지 못할 때 unknown을 사용해주는 것이 좋다. 

 

void

 

아무것도 return 하지 않은 함수를 대상으로 사용한다. 

콜론을 찍고 void라고 써줘도 되고 리턴타입을 표시하지 않아도 된다. 

 

never

함수가 절대 return하지 않을 때 발생한다. 

리턴타입에 never라고 설정해주면 리턴하는게 없어야 하는데 return값을 명시해줘서 에러가 뜨는 것이다.

 

never는 타입이 두가지 일수도 있는 상황에 발생할 수 있다.  매개변수로 받아오는 name의 데이터 타입이

위의 사진을 보면 string일 수도 있고 number일 수도 있다. 그때는 name: string | number라고 써주면 된다. (or)

 

1번의 경우는 리턴타입이 string, 2번의 경우는 리턴 타입이 number, 3번의 경우는 리턴타입이 never이다. 

 

728x90
반응형

댓글