[Typescript] 타입스크립트의 기본 타입

[Typescript] 타입스크립트의 기본 타입
타입스크립트의 주요 기본 타입 10가지에 대해서 예제 코드와 함께 설명한다.

number: 숫자타입

let age: number = 30;
let price: number = 9.99;
let hex: number = 0xff; // 255
  • 정수, 부동소수점, 2진수, 16진수 모두 포함
  • NaN도 number 타입으로 취급

string: 문자열 타입

let name: string = "nyaong";
let sentence: string= `hello, ${name}!`; // 템플릿 리터럴
  • 작은따옴표('), 큰따옴표("), 백틱(``) 모두 사용 가능

undefined & null

let u: undefined = undefined;
let n: null = null;
  • undefined: 값이 할당되지 않은 변수
  • null: 의도적으로 빈 값 할당
  • 주의strictNullChecks 옵션 활성화 시 다른 타입에 할당 불가

any: 모든 타입 허용⚠️

let dynamicValue: any = "문자열";
dynamicValue = 42;          // 가능
dynamicValue = true;        // 가능
  • 타입 검사 무시 (최후의 수단으로만 사용 권장)
  • 타입스크립트의 장점을 무효화하므로 남용 금지
  • 웬만하면 사용하지 말기!!💩

unknown: 안전한 any

let userInput: unknown = "안녕하세요";

if (typeof userInput === "string") {
  let text: string = userInput; // 타입 검사 후 사용
}
  • any처럼 모든 값 허용하지만 타입 검사 필수
  • 타입 가드(typeofinstanceof)와 함께 사용

void: 반환값이 없는 함수

function logMessage(message: string): void {
  console.log(message);
}
  • 주로 함수 반환 타입으로 사용
  • 변수에 사용시 undefined만 할당 가능 (단, strictNullChecks 활성화시)

never: 절대 발생하지 않는 값

function throwError(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while(true) {}
}
  • 함수가 절대 반환되지 않음을 명시
  • 모든 타입의 하위 타입 (모든 타입에 할당 가능)

object: 객체타입

let user: object = {
  name: "Bob",
  age: 25
};

// 더 구체적인 타입 정의 추천
type User = {
  name: string;
  age: number;
};

let betterUser: User = {
  name: "Bob",
  age: 25
};
  • 객체의 구조를 명시할 때는 인터페이스나 타입 별칭 사용 권장
  • {} 보다 구체적인 타입 정의가 더 안전함

배열(Array)과 튜플(Typle)

// 배열
let numbers: number[] = [1, 2, 3];
let names: Array<string> = ["Alice", "Bob"];

// 튜플
let person: [string, number] = ["Alice", 30]; // 정해진 순서의 타입

🛑 타입 추론(Type Inference)

let message = "Hello"; // 자동으로 string 타입 추론
message = 123; // ❌ Error: Type 'number' is not assignable to type 'string'
  • 명시적 타입 선언 없어도 자동으로 타입을 추론
  • : type 표기는 필요한 경우에만 사용

📌 요약 표

타입 설명 사용 예시
number 모든 숫자 형태 let count: number = 42
string 문자열 let name: string = "Alice"
boolean true/false let isDone: boolean = true
null 의도적인 빈 값 let n: null = null
undefined 할당되지 않은 값 let u: undefined
any 모든 타입 허용 (위험) let dynamic: any = "text"
unknown 타입 검사 필요한 모든 타입 let notSure: unknown = 10
void 반환값 없는 함수 function log(): void {}
never 절대 반환되지 않는 함수 function error(): never {}
object 객체 (구체적 정의 추천) let obj: object = {}

댓글