interface 문법

고재현·2023년 8월 10일
0

TypeScript

목록 보기
10/13
post-thumbnail

object에 쓸 수 잇는 interface

interface 문법을 쓰면 object 자료형의 타입을 보다 편리하게 지정가능하다.

interface Square {
  color : string,
  width : number,
}

let 네모: Square = {color:'red',width:100}

이렇게 interface는 object랑 비슷하게 작성하면 된다.
type alias와 용도와 기능이 똑같다고 보면 되는데

  1. 대문자로 작명
  2. {} 안에 타입을 명시

만들어 두면, object자료를 만들 때 interface를 집어넣어 편하게 타입지정을 할 수 있다.

interface의 장점

interface는 extends를 할 수 있다는 장점이 있다.
예를 들어서
Student interface에는 name 속성이 필요하고
Teacher에는 name,age둘다 들어간다고 해야한다면

interface Student {
  name: string,
}
interface Teacher {
  name: string,
  age : number.
}

평소라면 이렇게 만들겠지만, extends를 쓴다면

interface Student {
  name : string,
}
interface Teacher extends Student {
  age : number
}

여기서 extends 문법은 interface 여기에 복사해달라는 뜻이다.
그럼 이제 Teacher은 age라는 속성 말고도 Student 안에 있는 name 속성도 같이 가지게 된다.

type 키워드와의 차이점

  • extends 문법

interface의 경우

interface Animal {
  name : string,
}
interface Cat extends Animal {
  legs: number.
}

type alias의 경우

type Animal = {
  name : string,
}
type Cat = Animal & { legs: number}

이렇게 type alias의 경우 extends는 안되고 & 기호를 써서 object를 합칠 수 있다.

  • 타입이름 중복 선언

interface의 경우

interface Animal { 
  name :string 
} 
interface Animal { 
  legs :number 
}

type의 경우

type Animal = {
  name : string
}
type Animal = {
  legs : number
}

interface의 경우에는 계속 override를 할 수 있지만, type은 중복선언을 허용하지 않는다.

extend시 object안의 속성이 중복될 때

interface Animal {
  name : string,
}
interface Dog extends Animal {
  name : number
}

이렇게 name 속성이 중복되면 에러가 난다.
이와 비슷하게

interface Animal { 
  name :string 
} 
interface Dog { 
  name :number
} 

let 변수 :Dog & Animal = { name : '멍멍' }

이렇게 해도 에러가 뜨는것은 매한가지다.
하지만 둘다 name : string타입이면 에러가 나지 않는다.

profile
잘못된 내용이 있다면 알려주세요..!

0개의 댓글