inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

DAY09 인터페이스와 클래스

정예은
0

오늘의 학습 체크

섹션 강의 학습여부 6. 클래스 자바스크립트의 클래스 소개 6. 클래스 타입스크립트의 클래스 6. 클래스 접근제어자 6. 클래스 인터페이스와 클래스


타입스크립트의 클래스

1⃣클래스

객체 표현

const employee = {
  name: "정예은",
  age: 28,
  position: "취준생",
  work() {
    console.log("사람을 미워하자");
  },
};

클래스 생성

//-  클래스 생성 
class Employee{
  name;
  age;
  position;
  
}

💣오류발생!

💣해결방법!

    "noImplicitAny": false

💣그러나 !

클래스 오류 발생

image.png

[ 해결방법 ]

  1. 그냥 생성자 만들어버렷!

  2. 생성자 만들때, this로 값 선언해주기

 constructor(name: string, age: number, position: string) {
    this.name = name;
    this.age = age;
    this.position = position;
  }

클래스 타입 오류 해결

//-  클래스 생성
class Employee {
  name: string;
  age: number;
  position: string;

  constructor(name: string, age: number, position: string) {
    this.name = name;
    this.age = age;
    this.position = position;
  }

  work() {
    console.log("사람을 미워하자.");
  }
}

→ 재정비한 타입클래스를 새로운 객체로 만들어보자.

객체타입이니, 생성시 new 클래스명 호출하기

const employeeB = new Employee("정예은", 28, "취준생");
console.log(employeeB);

결과확인

PS C:\\Users\\admin\\OneDrive\\문서\\onebite-typescript\\section03> tsx src/chapter11.ts
Employee { name: '정예은', age: 28, position: '취준생' }

2⃣타입클래스는 자바클래스도 가능하다.

타입클래스 → 타입으로 사용 가능

const employeeC:Employee={
  
}

const employeeC: Employee = {
  name: "",
  age: 0,
  position: "",
  work() {},
};

3️⃣클래스 상속

Employee클래스 상속

//* 클래스 상속 Employee
class ExecutiveOfficer extends Employee{
 //필드
  officeNumber: number;
}
  1. 부모인 Employee클래스의 필드값과 메서드가 기본으로 들어있음

  2. 여기에 ExecutiveOfficer 만의 필드만 더 추가.

생성자 생성

//생성자
  constructor(
    name: string,
    age: number,
    position: string,
    officeNumber: number
  ) {
    super(name, age, position)
    this.officeNumber=officeNumber;
  }

🧩오늘의 퀴즈

문제풀이

image.png

질문

  1. 접근제어자 선택시 readonly 하나만 사용해도 되는지 , public 생략해도 되는지 궁금해

  2. 그리고 접근제어자 선택하고 생성자 생성시, 생략가능한 부분은 생략해도 된다고 하는데!

아래 첨부한 코드처럼 생성자의 매개변수에 접근제어자 다 때려박아도 되는 걸까?

class Pokemon {
  constructor(public name:string, public skill:string, readonly type:string){
  }

  getName(){
    return this.name; //변화하지 않은 그냥 name의 필드값만 반환
  }

  setSkill(skill:string){
return skill; //매개변수로 받은 skill의 값을 고대로 출력
  }
}

프론트엔드 한입챌린지 이정환 한입타입스크립트 타입스크립트

답변 0