[TS] 타입스크립트의 기본 타입

Jane·2023년 8월 14일
0

TypeScript

목록 보기
2/17
post-thumbnail

image

💡 boolean

JS의 boolean 타입에 대응하는 값으로, 참/거짓을 나타냄

💡 number

숫자를 나타내는 타입
* JS에서 모든 수가 IEEE754 표준을 따르는 부동소수점이라는 특징을 공유함
    - 정수, 부동 소수점 등의 구분이 따로 없음
    - 정수 7과 부동소수점 7.0을 동일하게 저장함

부동소수점

: 실수를 컴퓨터 상에 표현할 때 소수점의 위치를 고정하지 않고, 그 위치를 나타내는 수를 따로 적는 것

  • 부동소수점은 정수와 달리 지수부, 가수부(유효숫자)로 나누어 수를 저장함
  • C언어, 자바 등에서는 정수와 부동소수점을 구분하여 저장

💡 string

문자열을 나타내는 타입
+) ES6 템플릿 리터럴 (백틱으로 감싸진 것) 역시 string 타입

💡 array

배열 타입은 두 가지 방법으로 쓸 수 있음
1. 배열 요소들을 나타내는 타입 뒤에 [] 쓰기
2. 제네릭 배열 타입 쓰기

💡 object

원시 타입이 아닌 타입
- JS의 오브젝트 리터럴을 정의할 때처럼 중괄호를 이용해 객체 타입 표현 가능
- 하지만 객체 타입 정의 시 :(콜론)의 우변에는 해당 속성의 타입이 들어감
- 구분자로 ,(콤마) 뿐만 아니라 ;(세미콜론)도 사용 가능함

선택 속성

  • 속성명 뒤에 ?를 붙여 해당 속성이 존재할 수도, 존재하지 않을 수도 있음을 표현 가능

읽기 전용 속성

  • 속성명 앞에 readonly 키워드를 붙여 해당 속성의 재할당 금지
  • const 키워드를 이용한 변수의 정의와 비슷하게 동작함

💡 enum

- 열거형. 이름이 있는 상수들의 집합을 정의할 수 있음
- 의도를 문서화하거나 구분되는 사례 집합 생성에 용이
- TS에서는 숫자와 문자열 기반 열거형을 제공함
- 기본적으로 0부터 시작하여 인덱스처럼 번호를 매김
- 하지만 항목 중 하나의 값을 수동으로 설정하여 번호 변경 가능함
- 또는 모든 값을 수동으로 설정해줄 수도 있음
- 매겨진 값을 사용해 원하는 항목의 값을 알아낼 수 있음

모호한 타입

- 기술적으로 숫자 + 문자가 섞인 형태도 가능하나 권장되는 방식이 아님
- 모호한 타입에서 첫 번째 위치에 오지 않는 숫자형 타입의 값을 할당하지 않으면 에러 발생

🧐 object와 enum의 차이점?

  1. 속성 변경의 유연성
- object는 코드 내에서 새로운 속성을 자유롭게 추가 가능
- enum은 한 번 선언한 이후 새로운 속성으로 변경 불가능
  1. 허용하는 속성 타입의 종류
- object의 속성 값으로 JS가 허용하는 모든 타입이 올 수 있음
- enum의 속성 값으로는 문자열 혹은 숫자만 허용됨

💡 any

- 알지 못하는 타입을 표현해야 할 때 사용
- 사용자로부터 받는 데이터나 라이브러리 같은 동적 컨텐츠에 대해 사용 가능
- 타입 검사를 건너뛰고 컴파일 시 통과되길 원할 때
- 기존 JS처럼 작업할 수 있는 방식
- 타입의 일부만 알고 전체는 알지 못할 때 사용

💡 unknown

- any와 비슷하게 동작하나 타입이 지정된 변수에 unknown 타입의 값 할당 시 에러 발생
- 타입을 먼저 확인한 후 실행이 가능하므로 any 보다 unknown을 사용하는 것이 좋음
- JSON.parse() 함수 사용 시 유용

🧐 any와 unknown의 차이점?

- 둘 다 모든 타입을 허용한다는 점에서는 동일함
- any 사용 시 TS에서 느슨한 타입 검사를 진행하므로 에러를 미리 검출하지 못할 수 있음
  ( TS를 사용하는 의미가 사라짐 )
- unknown 사용 시 프로퍼티 접근 또는 연산 시 컴파일러가 타입을 체크하므로 미리 에러 예방 가능

+)

💡 tuple

- 요소의 타입과 개수가 고정된 배열 표현 가능
- 단, 배열처럼 요소들의 타입이 모두 같을 필요는 없음

💡 void

- 어떤 타입도 존재할 수 없음을 나타냄
- 함수에서 반환값이 없을 때 리턴 타입을 표현하기 위해 주로 사용
- void로 타입 변수 선언 시 해당 변수에는 undefined/null만 할당할 수 있으므로 권장되지 않음
  (null은 --strictNullChecks 사용하지 않을 때에만 void에 할당 가능)

💡 null, undefined

- void가 리턴값이 없는 함수에 사용될 수 있는 것과 달리, 그 자체로 유용한 경우는 드묾
- 다른 모든 타입의 하위 타입으로, number 같은 타입에 할당 가능
- △ --strictNullChecks 사용 시 오직 any와 자기 자신 타입만 할당 가능
- 만약 number와 null/undefined를 함께 허용하고 싶다면 유니언 타입을 사용해야 함

💡 never

- 절대 발생할 수 없는 타입
- (화살표) 함수 표현식에서 무조건 에러를 발생 시키거나 절대 반환하지 않는 리턴 타입에 사용됨
- 타입 가드에 의해 아무 타입도 얻지 못하게 된 변수도 never 타입을 얻게 될 수 있음
- 모든 타입에 할당 가능함
- △ never에 다른 타입을 할당할 수는 없음 (never 자신 제외. any도 할당 불가능)
profile
An investment in knowledge pays the best interest🙃

0개의 댓글

관련 채용 정보