이 사이트에서 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·데코레이터·고급 타입에 의존하지 마세요. 알고리즘과 가벼운 주석이면 충분합니다.