Typescript 재정리

Byungho.Kim·2022년 9월 8일

#타입스크립트 재정리

사용 목적

변수나 함수에 '타입'이라는 의도적인 제약을 가해서,
빌드 및 배포를 하기 전에 관련된 오류를 미리 찾아내고 해결하기 위해서 사용하고,
결과적으로 안정성과 편의성을 보다 쉽게 확보하기 위하여 사용합니다.

특징

  • 변수에 타입을 정할 수 있고 함수는 파라미터와 반환 값에 대한 타입을 정할 수 있다.

기본 예시

변수

<script> 
  const a = 3;
  const b = '5';
</script>

<script lang='ts'>
  const a:number = 3;
  const b:string = '5';
</script>

함수

<script> 
  function getId(id) {
    return new Promise((resolve)=>{
    	resolve('TEST');
    });
  }
</script>

<script lang='ts'>

  function getId(id:number):Promise<string> {
    return new Promise((resolve)=>{
    	resolve('TEST');
    });
  }

  // 또는
  declare function getId(id: number): Promise<string>;
</script>

장점

  • 충분한 피드백

  • 변수에 지정한 타입 이외의 값이 할당되는 경우는 오류로 검출된다.

  • 오류 메시지를 통해 정상 동작에 필요한 피드백을 충분히 받을 수 있다.

  • 연동 작업에 소요되는 리소스 감소
    - API에게 전달할 요청 파라미터, API로부터 전달받을 응답 파라미터를 명확하게 표현할 수 있음.
    - 인터페이스를 정의하고 보다 맞춤식의 타입을 정의할 수 있음
    - 구현 이후 테스트 시, 연동 규격서나 관련코드를 다시 들여다봐야하는 일이 적어짐

  • 프로덕션 내의 휴먼 에러 감소

    • 협업 과정에서 발생할 수 있는 커뮤니케이션 로스가 있는 경우, 깜박하고 미처 구현하지 못한 경우
    • 빌드 전에 오류로 검출되므로 실수로 인한 코드가 빌드 & 배포될 일이 적어진다.
  • 백엔드 프론트엔드 통합
    - 풀스택으로 타입스크립트를 사용할 경우, 공통의 타입을 정의하고 레퍼런스하도록 구현함으로써

    • 데이터 포맷을 강제할 수 있기에 개발 안정성을 쉽게 확보할 수 있다.
  • API 문서화, 연동 테스트 등등, 코드 작성 이후 단계에서 품질을 보장할 수 있는 방법에 의존하는 것 보다 코드 작성 단계에서 IDE에서 제공하는 자동 완성 및 피드백에 의존하는 것이 개인의 생산성과 조직의 생산성에서 보다 더 좋다.

단점

  • 요구사항 변경, 기능변경, 리팩토링으로 인해 any로 도배될 가능성-> 안하는게 나음
    (적재 적소에 타입을 지정하는 요령이 필요)

  • Advance Type, Utility Type 등, 제공하는 기능의 컨셉이 생소할 수 있다.
    (문제 해결을 위한 자원들에 대한 개념, 활용법을 습득해야한다.)

  • 런타임 이전의 변수, 함수의 정합성을 보장하는 것이지, 런타임 이후의 동작을 보장하는 것이 아니다.
    (보장하는 범위에 한계가 있음을 유의하여 Type guard를 작성하거나, 기타 라이브러리를 사용해야한다.)

Usage

profile
스스로 깨면 병아리, 남이 깨면 후라이

0개의 댓글