TypeScript(7)-Implements vs Extends, Keyof operator

2024. 11. 11. 15:20·🥏TypeScript

Extends

Extends 키워드는 자바스크립트에서도 사용할 수 있으며 부모 클래스에 있는 프로퍼티나 메소드를 상속해서 사용할 수 있게 만들어준다.

Implements

Implements 키워드는 새로운 클래스의 타입체크를 위해서 사용되며, 그 클래스의 모양을 정의할때 사용한다.
(부모 클래스의 프로퍼티와 메소드를 상속받아서 사용하는게 아님!!!!)

class Car{
  mileage =0 ;
  price =100;
  color ='white';
  
  drive(){
    return 'drive!';
  }
  brake(){
    return 'brake';
  }
}

class Ford extends Car{
  
}

const myFordCar = new Ford();
myFordCar.color

여기서 아래부분을 implement로 바꿔주면

class Ford implements Car{
  
}


오류가 뜬다
처리하려면 -> Ford 클래스에도 Car클래스에 있는 속성들을 넣어주면 된다.

class Ford implements Car{
  mileage =0 ;
  price =100;
  color ='white';
  
  drive(){
    return 'drive!';
  }
  brake(){
    return 'brake';
  }
}
const myFordCar = new Ford();

keyof operator

keyof 연산자는 제공된 타입의 키를 추출하여 새로운 union 유형으로 반환한다.

interface IUser {
  name:string;
  age:number;
  address:string;
}

type UserKeys = keyof IUser;
//'name' | 'age' | 'address'

typeof keyof

typeof 연산자와 함께 사용하면 keyof연산자는 객체의 모든 키에 대한 union형식을 반환한다.

const user =  {
  name:'john';
  age:20;
  address:'seoul';
}

type UserKeys = keyof typeof user;
//'name' | 'age' | 'address'

user는 type이 아니라 object이기 때문에 먼저 typeof를 사용해서 객체의 타입을 가져온 다음에 keyof를 사용해서 해당 키를 추출하는거!!!

enum 에서의 keyof

enum에서 모든 키를 추출하려면 keyof연산자와 typeof연산자의 조합으로 사용해야한다.

enum UserRole{
  admin,
  manager,
}
type UserRoleKeys = keyof typeof UserRole;
// 'admin' | 'manager';

-> keyof 는 type에서 키를 추출할때 유용하다

 

'🥏TypeScript' 카테고리의 다른 글

[JS & TS] 제네릭 , 타입가드  (0) 2024.11.13
TypeScript(8) - Mapped Types  (0) 2024.11.11
TypeScript(6)-Utility Type  (0) 2024.11.11
TypeScript(5)-함수 오버로딩,Generics  (0) 2024.11.11
TypeScript(4)-Type Alias,Interface,호출 시그니처,인덱스 시그니처  (0) 2024.11.11
'🥏TypeScript' 카테고리의 다른 글
  • [JS & TS] 제네릭 , 타입가드
  • TypeScript(8) - Mapped Types
  • TypeScript(6)-Utility Type
  • TypeScript(5)-함수 오버로딩,Generics
gprorogpfus
gprorogpfus
:- >
  • gprorogpfus
    gpfusdldks
    gprorogpfus
  • 전체
    오늘
    어제
    • 분류 전체보기 (57)
      • 🎭JavaScript (3)
      • 👚 CSS (1)
      • ⚛️ React (13)
      • 🌃 Next.js (6)
        • 🔜 next.js-study (3)
      • 🥏TypeScript (10)
      • 🏴알고리즘 (2)
      • 🌴트러블슈팅 (3)
      • ⛲ 프로젝트 (6)
        • 👖gproro-shop-app (8)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    Redux
    TypeScript
    react
    GIT
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
gprorogpfus
TypeScript(7)-Implements vs Extends, Keyof operator
상단으로

티스토리툴바