this라는 것은 어떤 클래스 안에 있는 함수를 다른 콜백으로 전달 할 때 그 함수가 포함하고 있는 클래스 정보가 사라진다.
함수를 인자로 어딘가에 전달할 때 자바스크립트는 클래스 정보를 함께 전달하지 않는다.
클래스가 무시 된 상태로 함수만 전달을 한다.
어떤 클래스에 있는 함수를 누군가에게 전달해줄때는 이 함수를 클래스와 바인딩을 해줘야 한다.
이것을 this 바인딩이라고 한다.
바인딩을 할 수 있는 방법은 3가지가 있다.
this.onClick = this.onClick.bind(this)
this.field.addEventListener('click', this.onClick);
this.field.addEventListener('click', (event) => this.onClick(event));
this.field.addEventListener('click', this.onClick);
...
...
onClick = event => {
...
...
}
타입스크립트는 문자열을 이용해서 타입을 만들 수 있지만 자바스크립트는 안된다.
자바스크립트로 타입을 보장 하는 법.
export const Reason = Object.freeze({
win: 'win',
lose: 'lose',
cancel: 'cancel',
...
})