Illie
TS. 다양한 Class 본문
1. Class
class Player {
constructor(
private firstName:string,
private lastName:string,
public nickName:string,
){}
}
const nico = new Player("nico", "las", "니코")
// ERR(firstName은 private 이므로...)
nico.firstName
2. Abstract class(추상클래스)
- 다른 클래스가 상속받을 수 있는 클래스
- 직접 인스턴스 생성 불가능
abstract class User {
constructor(
private firstName:string,
private lastName:string,
public nickName:string,
){}
}
class Player extends User {}
// Allowed
const nico = new Player("nico", "las", "니코")
// ERR (abstract class)
const nico2 = new User("nico", "las", "니코")
3. Abstract class & Abstract method
abstract class User {
constructor(
private firstName:string,
private lastName:string,
public nickName:string,
){}
getFullName(){
return `${this.firstName} ${this.lastName}`
}
}
const nico = new Player("nico", "las", "니코")
// Allowed
nico.getFullName()
abstract class User {
constructor(
private firstName:string,
private lastName:string,
public nickName:string,
){}
private getFullName(){
return `${this.firstName} ${this.lastName}`
}
}
const nico = new Player("nico", "las", "니코")
// ERR
nico.getFullName()
4. protected vs private
- private: 인스턴트 밖에서 접근할 수 없고 다른 클래스에서도 접근 불가능
- protected: 인스턴트 밖에서 접근할 수 없지만, 다른 클래스에서 접근 가능
5. Class 활용
type Words = {
[key: string]: string
}
class Dict {
private words: Words
constructor(){
this.words = {}
}
add(word:Word){
if(this.words[word.term] === undefined){
this.words[word.term] = word.def;
}
}
def(term:string){
return this.words[term]
}
}
class Word {
constructor(
public term:string,
public def:string
){}
}
const kimchi= new Word("kimchi", "한국의 음식")
const dict = new Dict()
dict.add(kimchi)
dict.def("kimchi")
'JAVASCRIPT > 타입스크립트' 카테고리의 다른 글
TS. Interfaces (0) | 2022.07.10 |
---|---|
TS. Function (0) | 2022.06.29 |
TS. 심화문법 (0) | 2022.06.29 |
Comments