본문 바로가기

모카 스터디/JavaScript

한입크기로 잘라먹는 타입스크립트 - 이해하기 - [인프런]

섹션 3 타입스크립트 이해하기

타입스크립트 이해하기

타입은 집합이다

타입 계층도와 함께 기본타입 살펴보기

unknown 타입 (전체 집합)

unknown 타입은 타입 계층도의 상단에 위치합니다.

unknown 타입 변수에는 모든 타입의 값을 할당할 있습니다. 바꿔 말하면 모든 타입은 unknown 타입으로 캐스트 있습니다.

never 타입 (공집합 타입)

never 타입은 타입 계층도에서 가장 아래에 위치합니다.

void 타입

any 타입

어떤 곳으로 가든 어떤 곳에서 오든 모든 업캐스팅 다운 캐스팅이 가능하다 ==> 치트키

단, never 타입에서의 다운 캐스팅으 예외이다.

객체 타입의 호환성

초과 프로퍼티 검사 : 변수를 초기화(및 함수 인자 전달) 할때 초기화 하는값으로 객체 리터럴을 사용하면 발동

대수 타입

합집합(Union) 타입

교집합(Intersection) 타입

타입 추론

1. 변수 선언

일반적인 변수 선언의 경우 초기값을 기준으로 타입이 추론됩니다.

2. 구조 분해 할당

객체와 배열을 구조 분해 할당하는 상황에서도 타입이 추론됩니다.

3. 함수의 반환값

함수 반환값의 타입은 return 문을 기준으로 추론됩니다.

4. 기본값이 설정된 매개변수

기본값이 설정된 매개변수의 타입은 기본값을 기준으로 추론됩니다.

주의해야 할 상황들

1. 암시적으로 any 타입으로 추론

변수를 선언할때 초기값을 생략하면 암시적인 any 타입으로 추론됩니다.

d = 10; 다음 라인부터는 d number 타입이 되고, d = “hello” 다음 라인부터는 d string 타입이 됩니다.

따라서 마지막 라인에서 d string 타입일 toFixed 같은 number 타입의 메서드를 사용하려고 하면 오류가 발생합니다.

이렇게 암시적으로 추론된 any 타입은 코드의 흐름에 따라 타입이 계속 변화합니다.

이를 any 진화라고 표현하기도 합니다.

2. const 상수의 추론 ==> 리터럴 타입으로 추론

타입 단언 as사용

타입 단언의 예시

타입 단언의 규칙

const 단언

non null 단언

옵셔널 체이닝이 발생하면 원하는 작업을 할수 없을 때 non null단언 사용

null이 아니라고 믿게한다.

하지만 단언은 업캐스팅과 다운캐스팅과 다르게 타입을 바꾸는게 아니라 컴파일러의 눈을 잠시 가리는 것이어서

조심해서 사용 해야한다.

타입 좁히기

오른쪾은 클래스 왼쪽은 그 클래스 내에 있는 인스턴스

서로소 유니온 타입

집합이 없는 타입들 서로소 관계에 있는 타입들을 모아 만든 유니온 타입