Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- nodejs
- 게임
- cookie
- react
- GIT
- nestjs
- class
- 자료구조
- flask
- dfs
- JavaScript
- mongoose
- MongoDB
- Nest.js
- Python
- Sequelize
- Express
- jest
- game
- 정렬
- MySQL
- AWS
- TypeScript
- OCR
- Bull
- 공룡게임
- Queue
- typeORM
- Dinosaur
Archives
- Today
- Total
포시코딩
[TypeScript][노마드코더] #4 CLASSES AND INTERFACES(2) 본문
728x90
Class 심화
Constructor에서 직접 초기화 되지 않는 property 만들기
type Words = {
[key: string]: string
}
class Dict {
private words: Words // Error!
}
위 코드는 에러가 발생한다.
words는 initializer가 없고 Constructor에서 정의된 sign이 아니라는 에러인데
Constuctor에 포함시켜주지 않다보니 발생하는걸 볼 수 있다.
type Words = {
[key: string]: string
}
class Dict {
private words: Words
constructor() {
this.words = {}
}
}
하지만 이렇게 작성할 경우 에러가 사라지는걸 볼 수 있다.
예제
type Words = {
[key: string]: string
}
// property가 constructor부터 바로 초기화되지 않는 경우
class Dict {
private words: Words
constructor() {
this.words = {} // 수동으로 초기화
}
add(word: Word) {
// 클래스를 타입처럼 사용한 경우.
// 파라미터가 이 클래스의 인스턴스이길 원할 때 이렇게 사용할 수 있다.
// 추후 interface가 이런 사용법을 대체할거임
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');
728x90
'JavaScript' 카테고리의 다른 글
[TypeScript][노마드코더] #4 CLASSES AND INTERFACES(4) (0) | 2023.01.22 |
---|---|
[TypeScript][노마드코더] #4 CLASSES AND INTERFACES(3) (0) | 2023.01.22 |
TypeScript를 공부하면서 드는 의문점 정리 - 계속 작성중 (0) | 2023.01.22 |
[TypeScript][노마드코더] #4 CLASSES AND INTERFACES(1) (0) | 2023.01.20 |
[TypeScript][노마드코더] #3 FUNCTIONS(2) (0) | 2023.01.17 |