Typescript - 03

이강민·2022년 7월 11일
0

Typescript

목록 보기
3/16
post-thumbnail

타입스크립트 - 객체와 클래스

클래스 선언문

class 클래스이름{
  [private | protected | public] 속성 이름[?] : 속성 타입[...]
}

자바스크립트에서 클래스는 객체이다.

class Person1{
// 변수의 타입을 작성해준다. 
  name : string 
  age  ?: number
}
// 클래스를 인스턴스화 시키는데 클래스 타입을 명시한다.
let kangmin : Person1 = new Person1();
kangmin.name = 'kangmin';
kangimin.age = 21;
console.log(kangmin); // Person1{name : "kangmin" , age : 21}

접근제한자

클래스를 사용하는 다른 언어와 마찬가지로 public, private, protect와 같은 접근제한자를 사용할 수 있다. 생략 시 public 이다.

생성자

class Person3{
  name : string
  age : 23
constructor(name : string, age ?: number){
    this.name = name;
    this.age = age;
  }
}

let kangmin2 : Person3 = new Person3("kang", 23)

인터페이스 구현

인터페이스 생성 뿐 아니라 구현도 할 수 있다.

class 클래스 이름 implements 인터페이스 이름{
 ...
}

인터페이스를 구현하는 구현 클래스는 반드시 인터페이스가 정의하고 있는 멤버 속성으로 포함해야 한다.

interface IPerson{
  name : string 
  age ?: number
}

class Person implements IPerson{
  name : string 
  age ?: number
}
// 혹은 아래와 같이 생성자로 넘겨주어도 된다.
class Person2 implements IPerson{
  constructor(public name : string, public age ?: number){}
}

// 인스턴스화를 할때는 변수에 타입으로 인터페이스타입으로 넘겨준다.
let kangmin : IPerson = new Person2('kangmin', 23)
console.log(kangmin); // Person2{name : "kangmin", age : 23}

추상클래스

abstract class 클래스이름{
  abstract 속성 이름 : 속성 타입
  abstract 메서드 이름 ( ) { }
}

추상클래스는 new 연산자를 적용하여 객체를 만들 수 없다.

abstract class AbPerson{
  abstract name : string 
  constructor(public age ?: number) { }
}

클래스 상속

class 상속 클래스 extends 부모클래스 {...}
class Person extends AbPerson{
  constructor(public name : string, age ?: number){
 //부모생성자를 super로 가져 올 수 있다. 
  super(age)
  }
}

let kangmin : Person = new Person('kangmin', 23)
console.log(kangmin); //Person{name : "kangmin", age : 23}
profile
AllTimeDevelop

0개의 댓글