[TypeScript 공식문서] 2. Everyday Types(1)

2025. 3. 22. 00:26·Web/TypeScript

1. 원시 타입

  • string, number, boolean : 자바스크립트와 동일
  • String, Number, Boolean (대문자 버전)은 사용하지 않는 것을 권장

2. 배열

  • [1, 2, 3]과 같은 배열의 타입을 지정할 때 number[] 구문을 사용할 수 있습니다.
  • Array<number>와 같은 형태로 적을 수 있으며, 동일한 의미를 가집니다.
  • [number] 는 전혀 다른 의미를 가짐(튜플)

3. any

  • 어떤 타입도 허용, 타입 검사 무시
  • 디버깅이 어려워지므로 사용은 최소화
  • noImplicitAny 설정 시, 암묵적 any를 에러로 잡음

4. 타입 표기

  • let name: string = "Alice" → 명시적 타입 표기(선택 사항)
  • 대부분은 초기값 기반 타입 추론이 잘 됨

5. 함수

  • 매개변수, 반환값에 타입 지정 가능
function greet(name: string): void { ... }
  • 익명 함수, 화살표 함수도 타입 추론 가능

6. 객체 타입(Object Types)

  • { x: number; y: number }처럼 직접 구조 명시
// 매개 변수의 타입은 객체로 표기되고 있습니다.
function printCoord(pt: { x: number; y: number }) {
  console.log("The coordinate's x value is " + pt.x);
  console.log("The coordinate's y value is " + pt.y);
}
printCoord({ x: 3, y: 7 });
  • 옵셔널 프로퍼티: last?: string
  • 어떤 프로퍼티는 있을 수도 있고, 없을 수도 있을 때, ? 를 붙여서 옵셔널로 선언
function printName(obj: { first: string; last?: string }) {
  // last 는 있어도 되고 없어도 됨
}
// 둘 다 OK
printName({ first: "Bob" });
printName({ first: "Alice", last: "Alisson" });

7. 유니언 타입(Union Types)

  • 서로 다른 두 개 이상의 타입들을 사용하여 만드는 것
  • 유니언 타입의 값은 타입 조합에 사용된 타입 중 무엇이든 하나를 타입으로 가질 수 있다.
  • 조합에 사용된 각 타입을 유니언 타입의 멤버 라고 부름
function printId(id: number | string) {
  console.log("Your ID is: " + id);
}
// OK
printId(101);
// OK
printId("202");
// 오류
printId({ myID: 22342 });

타입 좁히기 (Type Narrowing)

TypeScript에게 "지금 이 값은 string이야!" 라고 알려줘야 함

→ typeof 연산자가 그걸 도와줌

function printId(id: number | string) {
  if (typeof id === "string") {
    // 여기서는 id가 'string'임을 확신
    console.log(id.toUpperCase());
  } else {
    // 여기선 number
    console.log(id);
  }
}

📌 왜 작동하나?

typeof id === "string" 조건문을 통해

→ 이 if 블록 안에서는 TypeScript가 id의 타입을 string으로 좁혀줌

→ 이제 toUpperCase() 써도 오류 없음

🔍 typeof 연산자란?

  • 런타임에서 변수의 타입을 문자열로 반환
  • 사용 예:
typeof "hello"      // "string"
typeof 123          // "number"
typeof true         // "boolean"
typeof undefined    // "undefined"
typeof null         // "object" ← 이건 JS의 역사적 버그
typeof [1, 2, 3]    // "object"
typeof () => {}     // "function"

유사 예시: 배열 vs 문자열 구분

function welcomePeople(x: string[] | string) {
  if (Array.isArray(x)) {
    // string[]로 좁혀짐
    console.log("Hello, " + x.join(" and "));
  } else {
    // string으로 좁혀짐
    console.log("Welcome lone traveler " + x);
  }
}

여기서는 typeof 대신 Array.isArray() 사용

→ 배열 타입 좁힐 때는 Array.isArray() 가 더 정확(배열도 typeof 사용하면 object로 나옴)

'Web > TypeScript' 카테고리의 다른 글

[TypeScript 공식문서] 3. Narrowing  (0) 2025.03.25
[TypeScript 공식문서] 2. Everyday Types(2)  (1) 2025.03.22
[TypeScript 공식문서] 1. The Basics  (1) 2025.03.20
'Web/TypeScript' 카테고리의 다른 글
  • [TypeScript 공식문서] 3. Narrowing
  • [TypeScript 공식문서] 2. Everyday Types(2)
  • [TypeScript 공식문서] 1. The Basics
bernie
bernie
공부한 내용을 업로드합니다.
  • bernie
    Daegi Bernie Yeo
    bernie
  • 전체
    오늘
    어제
    • 분류 전체보기 (11)
      • Web (9)
        • JavaScript (4)
        • TypeScript (4)
      • Algorithm (2)
      • CS (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    react
    백준
    javascript
    CSR
    BFS
    객체리터럴
    cpp
    SSR
    딥다이브
    Event
    속성 접근자
    js
    미로탐색
    괄호 표기법
    mordan cpp
    점 표기법
    onKeydown
    input
    2178
    c++
    typescript
    자바스크립트
    리액트
    객체
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
bernie
[TypeScript 공식문서] 2. Everyday Types(1)
상단으로

티스토리툴바