[TypeScript] Interface: 타입 지정하기

2024. 8. 1. 12:00·웹개발/TypeScript
728x90

타입스크립트에서 타입을 지정하는 방법을 알려드리겠습니다.

const a = {
  name: "Kim",
  age: 24,
};

console.log(a);
//결과 : { name: 'Kim', age: '24' }

변수 a를 const로 선언하고 객체를 할당했을 때,

console.log로 변수 a를 출력하게 되면 다음과 같은 결과를 출력받게 됩니다.

 

이떄 타입스크립트에서는 Type을 지정할 수가 있습니다.

const a: { name: string; age: number } = {
  name: "Kim",
  age: 24,
};

console.log(a);

위의 코드와 같이 상수 a에 name은 문자열 age는 숫자형으로 명시해줌으로써 타입을 지정해줄 수가 있습니다.

타입을 지정할때에는 해당 상수, 변수에 :를 붙이고 중괄호 { } 를 이용해서 안에다가 명시할 수 있습니다.

근데 이렇게 타입을 지정할 경우, 여러개의 상수, 변수가 있다고 하면 일일이 타입을 지정해주기가 번거로운 문제가 있습니다.

이럴때 interface를 사용하여 쉽게 타입을 지정할 수가 있습니다.

interface type {
  name: string;
  age: number;
}

const a: type = {
  name: "Kim",
  age: 24,
};

console.log(a);

먼저 interface를 사용하여 타입을 지정해줍니다.

그리고 상수 a의 타입을 인터페이스로 선언한 type으로 붙여주면 타입스크립트에서 쉽게 타입을 지정할 수가 있습니다.


그런데 만약 타입에 없는 속성을 추가하고 싶거나, 타입에 있는 속성이지만 객체에는 넣고 싶지 않다면 어떻게 해야할까요?

interface User {
  email: string;
  isActive: boolean;
}

const kim: User = {
  email: "kim@email.com",
};

const lee = {
  email: "lee@email.com",
  isActive: true,
};

console.log(kim);
console.log(lee);

이렇게 코드를 구성하면 kim상수에서는 isActive 속성이 없기 때문에 오류가 발생하게 됩니다.

이럴 때에는 isActive뒤에 ?를 사용하여 넣어도 되고 안넣어도 되고 상관없는 식으로 코드를 구성하시면 됩니다.

interface User {
  email: string;
  isActive?: boolean;
}

const kim: User = {
  email: "kim@email.com",
};

const lee = {
  email: "lee@email.com",
  isActive: true,
};

console.log(kim);
console.log(lee);

그러면 코드를 실행하였을때

{ email: 'kim@email.com', isActive: false }
{ email: 'lee@email.com', isActive: true }

문제없이 잘 돌아가게 됩니다.

728x90

'웹개발 > TypeScript' 카테고리의 다른 글

[타입스크립트] interface와 type의 차이  (0) 2024.08.01
[TypeScript] 타입스크립트 사용을 위한 초기 세팅  (0) 2024.08.01
타입스크립트, 너 뭔데 요즘 유행하냐?  (3) 2024.07.20
윈도우에서 타입스크립트(typescript)와 Code Runner 설정하기  (4) 2024.07.20
'웹개발/TypeScript' 카테고리의 다른 글
  • [타입스크립트] interface와 type의 차이
  • [TypeScript] 타입스크립트 사용을 위한 초기 세팅
  • 타입스크립트, 너 뭔데 요즘 유행하냐?
  • 윈도우에서 타입스크립트(typescript)와 Code Runner 설정하기
튼튼발자
튼튼발자
프론트엔드 개발자입니다. 헬스를 가끔해서인지 몸이 튼튼한거 같습니다. 그래서 튼튼한 개발자 => 튼튼발자입니다. 프론트엔드 및 관련 개발 내용 블로그 글로 정리해서 올려둡니다.
    250x250
  • 튼튼발자
    튼튼발자
    튼튼발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 튼튼발자의 끄적끄적 (10)
      • 웹개발 (94)
        • HTML (5)
        • CSS (2)
        • JavaScript (40)
        • TypeScript (5)
        • REACT (22)
        • Next.js (13)
        • GIt (7)
      • 기타 (3)
        • 일상 (3)
      • 프로젝트 (27)
        • Componique: UI 컴포넌트 라이브러리 (18)
        • GitHub Profile Viewer (8)
        • 잇핏 (1)
      • 프론트엔드 개발자로 취업준비 (1)
        • 기술 면접 (7)
        • 코딩 테스트 준비하기 (0)
        • 자기소개서&지원서&이력서 (0)
      • 컴퓨터과학 (12)
        • 운영체제 (6)
        • 알고리즘 (6)
      • 전공 공부 (37)
        • AI(인공지능) (2)
        • 컴퓨터네트워크 (19)
        • 네트워크프로그래밍 (3)
        • SW소프트웨어응용설계 (7)
        • 클라우드컴퓨팅 (3)
        • 웹서비스프로그래밍 (3)
      • PT (0)
      • 취준일기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프론트엔드개발
    트랜스포트계층
    자바스크립트
    웹개발
    ui컴포넌트
    프로그래밍
    NextJs
    TCP
    프론트엔드
    JS
    react
    github
    리액트
    네트워크
    데이터전송
    JavaScript
    코딩
    componique
    상태관리
    tailwind
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
튼튼발자
[TypeScript] Interface: 타입 지정하기
상단으로

티스토리툴바