dev.syw

string·number·boolean부터 배열·튜플·any·unknown·리터럴 타입과 타입 추론까지 익힌다.

기본 타입

TypeScript의 출발점은 값에 타입을 붙이는 일입니다. 기본 타입들을 알면 대부분의 변수를 정확하게 표현할 수 있습니다. 여기서는 가장 자주 쓰는 타입들을 한 번에 둘러봅니다.

학습 목표

  • 원시 타입(string/number/boolean)을 선언할 수 있다.
  • 배열과 튜플의 차이를 안다.
  • anyunknown 의 차이를 이해한다.
  • 리터럴 타입과 타입 추론을 활용한다.

원시 타입

가장 기본이 되는 세 가지 타입입니다. 변수 이름 뒤에 : 타입 으로 표기합니다.

let name: string = '민수';
let age: number = 20;
let isAdmin: boolean = false;

number 는 정수와 실수를 모두 포함합니다. 별도의 int/float 구분은 없습니다.

타입 추론

타입을 항상 직접 적을 필요는 없습니다. 초깃값이 있으면 TypeScript가 자동으로 타입을 추론합니다.

let city = '서울';   // string으로 추론
city = 123;          // ❌ number는 넣을 수 없음

💡 TIP — 초깃값으로 충분히 추론되는 변수에는 타입을 생략하는 편이 깔끔합니다. 함수의 매개변수·반환값처럼 추론이 안 되는 곳에 명시하세요.

배열

배열은 두 가지 방법으로 표기합니다. 둘은 완전히 같은 의미입니다.

let scores: number[] = [90, 85, 100];
let names: Array<string> = ['민수', '영희'];

튜플

튜플은 길이와 각 위치의 타입이 고정된 배열입니다.

let point: [number, number] = [10, 20];
let pair: [string, number] = ['age', 30];

pair = [30, 'age']; // ❌ 순서가 맞지 않음

좌표나 [키, 값] 쌍처럼 구조가 정해진 데이터에 유용합니다.

any 와 unknown

any 는 타입 검사를 사실상 끄는 타입입니다. 무엇이든 허용하지만, 그만큼 안전성을 잃습니다.

let data: any = '문자열';
data.foo.bar();   // 오류 안 남 → 런타임에 터질 수 있음

unknown 은 "타입을 아직 모른다"는 안전한 버전입니다. 쓰기 전에 타입을 확인해야만 사용할 수 있습니다.

let value: unknown = getInput();

value.toUpperCase();          // ❌ 먼저 확인이 필요
if (typeof value === 'string') {
  value.toUpperCase();        // ✅ string임이 확인됨
}
타입특징
any검사 없음. 가능하면 피하기
unknown안전. 사용 전 타입 확인 강제

⚠️ 주의any 를 남발하면 TypeScript를 쓰는 의미가 사라집니다. "정말 타입을 모를 때"는 any 대신 unknown 을 쓰세요.

null 과 undefined

strict 모드에서는 nullundefined 가 다른 타입에 함부로 섞이지 못합니다. 가능성을 유니온으로 명시해야 합니다.

let nickname: string | null = null;
nickname = '민수';   // OK

리터럴 타입

특정한 값만 허용하는 타입입니다. 정해진 선택지를 표현할 때 강력합니다.

let direction: 'up' | 'down' | 'left' | 'right';
direction = 'up';     // OK
direction = 'top';    // ❌ 허용된 값이 아님

number 리터럴도 가능합니다.

let dice: 1 | 2 | 3 | 4 | 5 | 6;

요약

  • 원시 타입은 string, number, boolean.
  • 배열은 T[] 또는 Array<T>, 튜플은 위치·타입이 고정된 배열.
  • any 는 검사를 끄므로 피하고, 모를 땐 unknown.
  • strict 에서는 null/undefined 를 유니온으로 명시한다.
  • 리터럴 타입으로 "정해진 값"만 허용할 수 있다.
  • 초깃값이 있으면 타입 추론에 맡기는 것이 깔끔하다.

댓글 0

TypeScript” 강좌에 대한 댓글입니다.

댓글을 작성하려면 로그인이 필요합니다.