재밌고 어려운 IT를 이해해보자~!

인터페이스(interface) 본문

카테고리 없음

인터페이스(interface)

언제나즐거운IT 2024. 10. 9. 14:56

타입 체크용 인터페이스

typescipt에서 제공하는 type 이랑 동일한 역할

interface Point {
  x: number;
  y: number;
}

function printCoord(pt: Point) {
  console.log("The coordinate's x value is " + pt.x);
  console.log("The coordinate's y value is " + pt.y);
}

let point: Point = {
  x: 100,
  y: 100,
};

printCoord(point);

타입 별칭에서는 허용이 안됐지만 인터페이스에서는 허용이 되는 부분이 있는데 바로 Intersection이다.

같은 이름의 타입 별칭을 사용할 경우 에러가 발생하지만 인터페이스의 경우 같은 이름의 인터페이스가 선언될 경우 두 인터페이스가 하나로 합쳐진다. 

interface Point {
  x: number;
  y: number;
}

interface Point {
  z: number;
}

function printCoord(pt: Point) {
  console.log("The coordinate's x value is " + pt.x);
  console.log("The coordinate's y value is " + pt.y);
  console.log("The coordinate's z value is " + pt.z);
}

let point: Point = {
  x: 100,
  y: 10,
  z: 1,
};

printCoord(point);

 

클래스에서의 인터페이스

클래스 기반 객체 지향 언어에서는 규모와 설계에 따라 인터페이스를 많이 사용하는데, 하나의 규격을 만들어 사용하게 도와주기 때문

추상 클래스와는 다르게 abstract를 선언하지 않으며, 인터페이스 그 자체로 추상적이기 때문에 인터페이스를 구현(implements) 하게 되면 그 안에 선언된 규격들을 반드시 구현해야함!

interface Animal {
  readonly gender: string;
  howling(): void;
  setName(name: string): string;
}

class Dog implements Animal {
  constructor(private name: string, private _gender: string) {}
  get gender(): string {
    return this._gender;
  }
  howling(): void {
    console.log("dooooooooooog!");
  }
  setName(name: string): string {
    this.name = name;
    return this.name;
  }
}

 

 

Comments