[TS] 타입스크립트의 등장

hahaha·2021년 10월 5일
0

TypeScript

목록 보기
1/3
post-thumbnail

타입스크립트란?

  • 자바스크립트로 컴파일되는, 자바스크립트의 타입이 있는 상위집합
  • 정적 타입 언어
    - 실행 전에 타입 검사기를 통해 정상 작동 여부를 확인함
// 타입을 명시
let a:string;

정적 타입 분석

  • 프로그램 실행 전(런타임 이전), 타입 분석을 진행
    - <-> 동적 타입 분석
  • 프로그램 실행 전, 상당수의 오류를 잡아낼 수 있다.
    - 자바스크립트 코드의 버그 중 15% 정도는 사전에 예방이 가능하다는 연구 결과
    - "개발 방식에 변화를 주어 버그 중 10% 이상을 줄일 수 있다면,
    고민할 이유없이 변화를 택해야 할 것" - MS의 어느 엔지니어링 매니저
  • 컴파일러 및 코드 에디터가 코드를 실행하지 않고도 훨씬 많은 정보를 알 수 있다
    - ex. 변수의 타입 정보를 안다면, 해당 변수의 멤버로 존재할 수 있는 변수를 자동 완성 후보로 추천해준다.

자바스크립트의 상위집합

  • 기존 자바스크립트 코드베이스의 마이그레이션에 드는 노력이 적음
  • 학습 곡선이 비교적 완만함
  • 서드파티 자바스크립트 패키시 사용이 상대적 수월함

자바스크립트에 정적 타이핑을 도입한 다른 언어

  • Elm, Reason, PureScript, ...
  • 자바스크립트와는 상당히 이질적인 문법을 지님

트레이드오프

  • "안전하고 증명 가능하게 올바른 타입 시스템 적용하기 보단, 정확성과 생산성 사이의 균형을 노린다."
    - 타입스크립트를 만들며 목표로 삼은 것

예시

function getFirstThreeCharsUnsafe(arg: { x: string | null }) {
    if (arg.x !== null) {
        window.alert('arg.x is string!');
        console.log(arg.x.substr(0, 3));
    }
}


var a: { x: string | null } = { x: 'ok' };
window.alert = function (str: string) {
    a.x = null;
};
// 타입 검사가 통과했음에도 불구하고 null을 바꿔버리는 순간 런타임 오류 발생
getFirstThreeCharsUnsafe(a);
  • 타입 안정성을 일부 희생하면서 사용성을 극대화 시킨 언어라고 할 수 있다.

커뮤니티

  • MS, Google, Slack, Tumblr 등 많은 기업이 타입스크립트를 사용
  • 최근 타입스크립트의 관심도와 성장세가 빠르게 증가하고 있다.
profile
junior backend-developer 👶💻

0개의 댓글

관련 채용 정보