TypeScript 인터페이스

김민석·2025년 8월 22일
post-thumbnail

인터페이스

객체 구조를 정의하는데 특화된 문법, 타입과 다르게 상속,합침(머지) 가 가능함.

인터페이스 기본문법

interface Person {
	name:string;
  	age:number;
  	sayHi : () => void // 메서드 정의
    sayHi() : void // 호출 시그니처 
    sayHi(a:number,b:number) : void;// 호출 시그니처 
}

const person : Person = {
	name:"김민석"
  	age:27
}

함수 표현식 정의는 두번 정의가 안되서 위에 sayHi 처럼 호출 시그니처를 이용해 오버로딩 구현하는 경우에는 함수 표현식 정의보다 호출 시그니처를 이용해 사용해야 한다. 보통은 함수 표현식 정의를 이용함.

유니온과 인터섹션 X

인터페이스 확장(상속)

슈퍼타입의 프로퍼티를 서브타입들이 상속 받아 사용하는 것

interface Animal{
	name:string;
  	color:sring;
}

interface Dog extends Animal{
	isBark : boolean
}

extends 를 이용해 슈퍼 타입의 프로퍼티를 상속 받을 수 있음.
상속 받은 프로퍼니는 재 정의 가능하지만 다운캐스팅(원본의 서브타입) 가능한 것 만 가능하다. string 에서 number 처럼 다르게 재 정의는 불가능하다.

다중 상속이 가능하다! ,를 이용해

interface DogCat extends Dog,cat {

}

인터페이스 합치기

인터페이스는 타입과 달리 중복으로 같은 이름을 사용해도 오류가 나지않음. 그 대신에 중복된 이름으로 인터페이스를 선언하면 두개의 인터페이스는 합쳐진다(머지) 두개의 프로퍼티를 모두 가지게된다. 선언 합침에 대해서는 똑같은 프로퍼티에서는 같은 타입을 사용해야 한다.

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

interface Person {
  	age:string; // x age가 number 와 string 둘다 있으면 안됨.
	name : "kms" // x 서브타입에도 오류가 남 string으로 해야함.
}

또한 합치는 경우에는 서브타입 으로 정의를 해도 오류가 난다!..

profile
나만의 기록장

0개의 댓글