[TS 공부 with 노마드 코더] #4.4 Recap

SOLEE_DEV·2022년 7월 24일
0

Typescript

목록 보기
10/10

복습

  • 인터페이스를 사용해 클래스에 특정 메소드나 property를 상속하도록 하는 법을 공부
  • 인터페이스는 내가 원하는 메소드 property를 클래스가 가지도록 강제할 수 있게 해줌
  • 인터페이스는 JS로 컴파일되지 않음
  • 추상 클래스와 비슷한 보호를 제공하지만, js 파일에서는 보이지 않음 추상 클래스는 일반 클래스로 바뀌어서 파일 크기가 좀 더 커지고 추가 클래스가 생김
  • 추상 클래스를 대체할 수 있음
  • 특정 모양을 따르게 하고 싶은거라면 인터페이스를 쓰는게 더 좋음
    (class Player implements User) -> TS가 보호해주지만, js파일에선 보이지 않음
// 타입을 쓰고 싶다면, type 키워드를 쓰면 됨
type PlayerA = {
    name: string
}

type PlayerAA = PlayerA & {
    lastName: string
}

const playerA: PlayerAA = {
    name: "nico",
    lastName: "nomad"
}

/////
interface PlayerB {
    name: string
}

interface PlayerB {
    lastName: string
}

interface PlayerB {
    health: number
    // 인터페이스에서는 중복 선언 가능!!
}

const PlayerB: PlayerB = {
    name: "nico",
    lastName: "nomad",
    health: 0
}

// 이 것만 봐서는 인터페이스, 타입을 구분할 수 없음!, 하지만 용도가 다름


// 원한다면 인터페이스와 타입 모두 추상 클래스를 대체해서 쓸 수 있음
type PlayerA = {
    firstName: string
}

interface PlayerB {
    firstName: string
}

class User implements PlayerA {
    constructor(
        public firstName: string
    ){}

}
// 모양, 상속하는 방법, 새로운 property를 넣어주는 방법을 빼더라도
// 두 개가 이루고자 하는 목적은 같음
// 상속하는 방법도 같고, 둘 다 추상 클래스를 대체할 수 있음

// 인터페이스 - 클래스나, 오브젝트의 모양을 정의하고 싶을 때
// -> 상속받는 방법이 직관적임
// 타입 - 다른 모든 경우

타입과 인터페이스는 매우 유사해서 둘 중에 하나를 자유롭게 선택해서 쓰면 됨

  • 인터페이스 : 항상 상속이 가능함
    -> but. 인터페이스는 새 property를 추가하기 위해 다시 선언될 수 있음
  • 타입 : 인터페이스의 대부분의 기능을 가지고 있음
    type은 = Animal & {} 이런식으로 계속 합집합으로~
profile
Front-End Developer

0개의 댓글