// 클래스
// class Train{
// constructor(color){
// this.color = color;
// }
// start(){
// console.log("start");
// }
// }
// JavaScript에서는 문제없지만 Typescript에서는 타입선언이 안되어 있어 에러
//추상 class
abstract class Train {
public name: string = 'train';
// public, private(#), protected
static wheels = 100;
constructor(public color: string, name) {
// public or readonly 변수 앞 선언
this.color = color;
this.name = name;
}
start() {
console.log('start');
console.log(this.name);
console.log(Train.wheels);
// static 선언시 this는 error
}
abstract doSonthing(): void;
}
// const ktx = new Train('red', 'ktx');
// 추상클래스 선언시 new는 사용 안됨
// 접근 제한자(Access modifier)
// public - 자식 클래스, 클래스 인스턴스 모두 접근 가능
// private - 해당 클래스 내부에서만 접근 가능
// protected - 자식 클래스에서도 접근 가능
class Mugunghwa extends Train {
constructor(color: string, name) {
super(color, name);
}
showName() {
console.log(super.name); // error private
}
// 상속받은 클래스는 추상메소드를 구체화시켜야함
doSonthing() {
console.log('do');
}
}
const yongsanHang = new Mugunghwa('black', 'yongsan');
console.log(yongsanHang.name); // error protected
https://www.youtube.com/watch?v=17Oh028Jpis&list=PLZKTXPmaJk8KhKQ_BILr1JKCJbR0EGlx0&index=6
https://www.youtube.com/watch?v=OpvtD7ELMQo
728x90
'Frontend > typescript' 카테고리의 다른 글
Typescript 배우기 8 (유틸리티 타입) (0) | 2022.06.05 |
---|---|
Typescript 배우기 7(제네릭) (0) | 2022.06.05 |
Typescript 배우기 5 (리터럴, 유니온/교차 타입) (0) | 2022.06.05 |
Typescript 배우기 4 ( 함수) (0) | 2022.05.19 |
Typescript 배우기 3 (interface) (0) | 2022.05.19 |