[TypeScript] 인터페이스란

Lily·2022년 9월 5일
0

TypeScript

목록 보기
3/3

💡 인터페이스(interface)란?

  • 객체의 구조와 타입을 정의하는 것

💡 인터페이스의 구조

  • 변수명은 클래스와 구분하기 위해 대문자로 시작할 것
  • 프로퍼티별 구분은 ;
interface Person {
  readonly name: string;
  age: number;

  greet(greeting: string): void;
}

let user1: Person;

user1 = {
  name: 'Lily',
  age: 20,
  greet(greeting: string) {
    console.log(`${gretting} ${this.name}`);
  },
};

💡 인터페이스 특징

  • readonly 제어자 사용 가능(public, private은 불가)
  • 인터페이스에 readonly를 설정하면 class에도 자동으로 설정된다.

💡 사용자 정의타입과 인터페이스

  • 기능과 그 모양은 비슷하나, 가장 큰 차이는 인터페이스는 객체의 타입을 정의하기 위해서만 사용
interface Person {
  name: string;
  age: number;

  greet(greeting: string): void;
}

type Person = {
  name: string;
  age: number;

  greet(greeting: string): void;
}

💡 인터페이스를 사용하는 이유

  • 클래스 간에 기능을 쉽게 공유할 수 있기 때문에 사용한다.
  • 즉, 특정 기능이 공유되어야 할 때 사용하면 유용하다. 왜냐하면 해당 인터페이스를 사용한다면 반드시 그 안에 정의되어있는 메서드를 사용해야 하기 때문에.

💡 인터페이스의 확장

  • 두 개의 인터페이스를 결합하여 새로운 인터페이스를 만들어 클래스에 적용할 수 있다.
interface Named {
  readonly name: string;
}

interface Greeting extends Named { // Greeting + Named인 인터페이스가 생김
  greet(phrase: string): void;
}

class Person implements Greeting {
  name: string;
  age = 30;

  constructor(n: string) {
    this.name = n;
  }

  greet(phrase: string) {
    console.log(phrase + '' + this.name);
  }
}

0개의 댓글