2026-01-24

타입스크립트

TypeScript란?

JavaScript에 정적 타입 시스템을 추가한 언어

코드 작성 시점에 타입 오류를 미리 발견할 수 있도록 도와줌

  • Microsoft에서 개발
  • JavaScript의 상위 집합
  • 컴파일 시 JavaScript로 변환됨

TypeScript를 사용하는 이유

JavaScript의 한계

  • 타입이 런타임에만 결정됨
  • 대규모 코드에서 오류 추적 어려움
  • 협업 시 코드 의도 파악 어려움

TypeScript의 장점

  • 컴파일 단계에서 에러 검출
  • IDE 자동 완성·리팩토링 강화
  • 코드 가독성·유지보수성 향상
  • 대규모 프로젝트에 적합

TypeScript 동작 흐름

TypeScript 코드
→ 타입 체크
→ JavaScript로 컴파일
→ 브라우저 실행

타입은 개발 단계에서만 존재

핵심 타입 문법

기본 타입

letage: number = 20;
letname: string = "React";
letdone: boolean = true;

배열 & 튜플

letnums:number[] = [1,2];
lettuple: [string,number] = ["a",1];

any / unknown / void / never

leta: any;
letb: unknown;
타입 설명
any 타입 검사 X (비권장)
unknown 타입 검사 O, 사용 전 체크 필요
void 반환값 없음
never 절대 도달하지 않음

객체 타입 & interface

interfaceUser {
id:number;
name:string;
}
  • 객체 구조 정의
  • 확장 가능

type vs interface

typeId = number | string;
구분 interface type
확장 O 조건부
유니온 X O
객체 O O
  • 객체는 interface,
  • 조합 타입은 type (면접 답변용)

유니온 / 인터섹션

type A = string | number;
type B = A & { id: number };

제네릭

function identity<T>(value: T): T {
  return value;
}
  • 타입 재사용
  • 유연하지만 안전

타입 추론

let x = 10; // number로 추론
  • 명시 안 해도 자동 추론
  • 필요한 곳만 명시

함수 타입

functionadd(a:number,b:number):number {
return a + b;
}

TypeScript와 React

typeProps = {
title:string;
};

functionComponent({ title }: Props) {
return<h1>{title}</h1>;
}
  • Props, state 타입 정의
  • 런타임 에러 감소

참고자료

  • https://develog-yeon.tistory.com/35
  • https://inpa.tistory.com/entry/TS-%F0%9F%93%98-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%83%80%EC%9E%85-%EC%84%A0%EC%96%B8-%EC%A2%85%EB%A5%98-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC
  • https://velog.io/@hoeun0723/Typescript%EB%9E%80-%EC%93%B0%EB%8A%94-%EC%9D%B4%EC%9C%A0-%EA%B0%9C%EB%B0%9C%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95-%ED%83%80%EC%9E%85-%EC%A0%95%EB%A6%AC
  • https://velog.io/@sunujun/%EB%B2%88%EC%97%AD-TypeScript-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8
  • https://velog.io/@minbr0ther/%EB%B2%88%EC%97%AD-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%A9%B4%EC%A0%91%EC%9D%B8%ED%84%B0%EB%B7%B0-%EC%A7%88%EB%AC%B8-%EC%8B%9C%EB%A6%AC%EC%A6%88-1

results matching ""

    No results matching ""