배경 라이브러리없이 밑바닥부터 개발하는 경험은 정말 소중하다. 1년전 우아한테크캠프를 통해서 이를 배웠으며 한번씩 기회가 될때마다 공부해왔다. 그리고 이제 좀 쓸만한? 리액트 비스무리한 라이브러리를 만든것 같아서 글을 적는다.(참고로 컴포넌트에 관한 3번째 글이다...) 사전지식 리액트를 만들어야하는데 리액트의 동작방식을 몰라서는 안된다. 최소한 공식문서는 정독하고 혼자서 가볍게라도 만들어보는 걸 추천한다. 이미 나와있는 자료들을 보고 내가 새롭게 만들어보는것도 좋은 방법이지만 아무것도 머리속에 넣지 않고서 머리를 쥐어뜯으면서 생각해보는 것이 더 도움이 된다고 생각한다. best practive를 찾아서 공부하는 건 좋은 방법이지만 그것만 쫓아서는 좋은 개발자가 될 수 없다고 생각한다. 혼자서 코딩해보고..
최근에 과제 테스트를 했는데 클래스의 타입을 지정하기가 어려워서 그냥 any를 썼다가 지적을 받았다. 자주있는 일은 아니지만 가끔 생성자 함수 또는 클래스(클래스는 생성자 함수의 syntax sugar)의 타입을 지정해줘야 할 일이 있다. 생각해보면 함수앞에 new만 적어주면 된다... 왜 나는 몰랐을까 이걸.. 그럴때는 아래와 같이 사용하자 interface ClassContructor { new (target: HTMLElement, props?: TState): void; }
클래스 ES6의 클래스가 기존의 프로토타입 기반 객체지향 모델을 폐지하고 새롭게 클래스 기반 객체지향 모델을 제공하는 것은 아니다. 사실 클래스는 함수이며 기존 프로토타입 기반 패턴을 클래스 기반 패턴처럼 사용할 수 있도록 하는 문법적 설탕이다. 아니 새로운 객체 생성 메커니즘이다. 클래스는 생성자 함수와 매우 유사하게 동작하지만 몇가지 차이가 있다. 1. 클래스를 new 연산자 없이 호출하면 에러가 발생한다. 2. 클래스는 상속을 지원하는 extends와 super 키워드를 제공한다. 하지만 생성자 함수는 extends와 super 키워드를 지원하지 않는다. 3. 클래스는 호이스팅이 발생하지 않는 것처럼 동작한다. 하지만 함수 선언문으로 정의된 생성자 함수는 함수 호이스팅이 함수 표현식으로 정의한 생성..