문법 · TS · intermediate

타입 주석·유니온·좁히기

JS solve에 타입을 붙여 실수를 줄입니다. 실행은 Sucrase로 지워집니다.

배우기 · TypeScript 문법 · 12분 · 1/7 · typescript · 타입

이 트랙 목차 (7)
  1. 1. 타입 주석·유니온·좁히기
  2. 2. interface · type · 제네릭 맛보기
  3. 3. 좁히기·가드: typeof, in, 판별 유니온
  4. 4. 배열·제네릭 함수 스케치
  5. 5. optional과 nullish: ?. ?? !
  6. 6. Promise와 async 함수 타입
  7. 7. 튜플·readonly 감각

이 사이트에서 TS란

TypeScript는 Sucrase로 변환된 뒤 JS Worker에서 실행됩니다.
타입은 컴파일 타임 힌트이고, 런타임에는 사라집니다. 채점 계약은 JS와 같습니다: solve(input: string).

function solve(input: string): string {
  const [a, b] = input.trim().split(/\s+/).map(Number);
  return String(a + b);
}

기본 주석

let n: number = 0;
let s: string;
let ok: boolean;
let xs: number[] = [];
let pair: [number, number] = [1, 2];

유니온과 좁히기

function label(x: string | number): string {
  if (typeof x === 'string') return x.toUpperCase();
  return String(x);
}

typeof / Array.isArray / in으로 좁히면 안전하게 메서드를 쓸 수 있습니다.

any를 피하기

막히면 unknown 후 좁히기가 any보다 낫습니다.
알고리즘 문제에서는 number / string / 배열이면 충분합니다.

옵셔널

function f(n?: number) {
  const v = n ?? 0;
}

배열·튜플

const xs: number[] = [];
const pair: [number, number] = [1, 2];

함수 타입

const add: (a: number, b: number) => number = (a, b) => a + b;

Sucrase 한계

이 사이트는 빠른 변환만 합니다.
enum·데코레이터·고급 타입에 의존하지 마세요. 알고리즘과 가벼운 주석이면 충분합니다.

관련 짧은 원리

관련 문제