재밌고 어려운 IT를 이해해보자~!
인터페이스(interface) 본문
타입 체크용 인터페이스
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