[타입스크립트 프로그래밍] 1~3장 요약

김재훈·2023년 7월 16일
0

Typescript

목록 보기
2/2

1장 소개

  • 타입스크립트 - 단위 테스트의 숫자를 반으로 줄임으로 더 "안전한" 프로그램을 구현할 수 있게 보장
    -> 안전한 = 타입 안정성(type safety) = 타입을 이용해 프로그램이 유효하지 않은 작업을 수행하지 않도록 방지

2장 타입스크립트: 3000미터 상공에서 내려다보기

2.1 컴파일러

  • 타입스크립트가 다른 언어와 다른 점은 컴파일러가 코드를 바이트코드 대신 자바스크립트 코드로 변환하는 것

  • 컴파일 과정(TSC가 수행)

1. 타입스크립트 소스 -> 타입스크립트 AST(추상 문법 트리)
2. 타입 검사기가 AST를 확인
3. 타입스크립트 AST -> 자바스크립트 소스

2.2 타입 시스템

  • 타입 시스템 - 어떤 타입을 사용하는지 컴파일러에 명시적으로 알려주는 타입 시스템과 자동으로 타입을 추론하는 타입 시스템으로 구분하며, 자동 추론하도록 하는 게 코드를 줄일 수 있는 방법

  • 에러 검출

    • 자바스크립트 - 런타임에 예외를 던지거나 암묵적 형변환을 수행
    • 타입스크립트 - 컴파일 타임에 문법 에러와 타입 관련 에러를 모두 검출

3장 타입의 모든 것

3.2.12 null, undefined, void, never

  • undefined - 아직 정의하지 않았음을 의미
  • null - 값이 없음을 의미
  • void - 명시적으로 아무것도 반환하지 않는 함수의 반환 타입
  • never
    • 절대 반환하지 않는(예외를 던지거나 영원히 실행되는)함수 타입
    • unknown이 모든 타입의 상위 타입이라면, never는 모든 타입의 서브타입
      = 모든 타입에 never를 항당할 수 있음
never를 반환하는 함수

function d(){
	throw TypeError('I always error')
}

3.2.13 열거형

  • 열거형(enum)

    • 해당 타입으로 사용할 수 있는 값을 열거하는 기법
    • 키를 값에 할당하는, 순서가 없는 자료구조. 키가 컴파일 타임에 고정된 객체
    • 이름은 단수 명사로 쓰고, 첫 문자는 대문자로 하는 것이 관례.
      키도 앞 글자를 대문자로 표시
  • const enum은 아무 자바스크립트도 생성하지 않으며, 대신 필요한 곳에 열거형 멤버의 값을 채워 넣는다
    -> 누군가의 타스 코드에 정의된 const enum을 가져왔을 때 이 채워넣기 기능이 문제를 일으킬 수 있음
    -> npm으로 배포하거나 라이브러리로 제공할 프로그램에서는 사용하지 말아야 함

  • 열거형을 안전하게 사용하는 방법을 까다롭고, 타스에서 대체할 수단이 많으므로 열거형 자체를 멀리 할 것을 권함

내 생각

  • (const )enum을 대체할 이정도 근거로 다른 개발자를 설득하는 데, 충분할 지 모르겠다,,
    -> 대체해야 되는 이유를 더 찾게되면 추가하기
  • enum의 대체 수단으로는 객체 리터럴에 as const라는 type assertion을 활용
const obj = { a: "123", b: "hello", c: "world" } as const;
type Value = typeof obj[keyof typeof obj]; // "123" | "hello" | "world"

// type Key = keyof typeof obj; // "a" | "b" | "c"
profile
같이 협업하며 성장하고싶은, 좋은 개발자를 지향합니다 :)

0개의 댓글