JS 공부/이론 정리

[JS] 타입스크립트를 내맘대로 써보고 느낀점(함수형에 객체지향 한컵 넣기)

장아장 2023. 8. 11. 11:02

신이 타입스크립트를 만들 때...

부스트캠프가 끝난지 딱 일주일째 되는 날이다. 

기존의 과제들을 타입스크립트로 하나씩 수정해보면서, 정말 좋다고 느낀 장점들과, 귀찮았던 점이 있다. 

 

좋은 점

런타임에서만 알던, 변수의 타입을컴파일단에서 바로 알 수 있다.

 

자바만 하던 나라면, 그거 당연한거아님?ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 변수 타입도 모르는 프로그래밍 언어가 있나?? 싶었을 것이다. 

자바스크립트를 공부해보며, 이게 참 좋은 기능이었다는 것을 느꼈다. 

(자멘....꽃이 지고 나서야 봄인줄 알았습니다..)

이러한 부분은 내가 함수에서 파라미터를 받을 때, 파라미터를 활용할 때 특히 득을 봤다. 

심지어 함수의 반환타입도 설정해줄 수 있어 아주 편했다. 

 

인터페이스를 사용할 수 있다.

 

사실 이 부분은 내가 자바스크립트에 있는데 써보지 못한 것일 수 있다. 

인터페이스가 없어, 부스트캠프에서 객체지향적인 프로그래밍을 해보자!!! 라고 다짐했을 때,

단순히 class타입 객체를 만들고 이를 상속받는 객체를 사용했다. 

 

인터페이스가 있으면서, 이러한 부분들을 더욱 체계적으로 만들 수 있었다. 

 

참 좋은 점이 많았다. 

실제로 기존에 내가 직접 찾아다녀야 알 수 있는 문제점들을, 바로바로 알려준다는 것이 아주 편했다. 

 

그렇게 칭찬해주면서, 왜 힘들다는 부분이 있을까?

이제부터 정리해보자. 

 

귀찮은(?) 점

자바를 하던 입장에서 오는 괴리감

 

보통 자바를 해본 사람의 입장에서, 간단한 객체 Member를 만들어보자. 

public class Member {
    private final String name;
    private final int age;
    
    public Member(final String name, final int age) {
    	this.name = name;
        this.age = age;
    }
}

이렇게, 자바의 클래스를 이용한 객체가 나온다. 

 

자바스크립트는 어떻게 생겼을까?

class Member {
  #name: string;
  #age: number;

  constructor(name: string, age: number) {
    this.#name = name;
    this.#age = age;
  }
}

이렇게 생겼다.

사실 이게 문제랄건 없다. 

단지 자바로 코딩을 처음 시작한 나에게 너무나 낯선 구조였다. 

사실 이를 극복하기 위해 지금 어떻게든 모든 코드들을 타입스크립트로 바꿔보면서, 테스트도 jest로 만들어보며 경험을 쌓아보고있다. 

 

그렇다면 나는 타입스크립트를 계속 쓸 것인가?

 

당연하지!

 

코드를 치는데 괴리감? Prettier 익스텐션 다운받으면 다 해준다.ㅋㅋㅋㅋㅋㅋㅋ

 

사실 구조적인 이점이 너무 컸다. 함수형 프로그래밍을 통해, 모든 기능들이 객체에 묶여있을 필요 없이, 어디서든 꺼내 사용할 수 있게 되었다. 

그렇지만, 객체와 타입에 대한 제약이 너무 느슨해, 통제가 힘든 부분도 존재했다. 

이걸 타입스크립트가 잡아준다?

이건 못참지....

 

자바쓰는 사람들이 타입의 소중함을 모를 수 있다.

(사실 나도 그랬다... 주변 친구들이 자바스크립트에서 타입이 어떻게 되고있는지 모른다길래 나도 몰?루 시전했다)

 

자바스크립트를 쓰고 다시 타입스크립트를 써보니 이게 참 좋은 거였다는 것을 느꼈다. 

다들 타입스크립트 쓰세욧!!!

 

그럼....twenty thousand...🔥