FrontEnd/TypeScript

Modern JavaScript TypeScript

is..cy 2023. 3. 11. 17:46

 


 

Typescript superset

 

1.  TypeScript 배경

  • JavaScript 태생적 한계 : Prototype-based Object Oriented Language, Scope/This, 동적타입언어
  • TypeScript는 Transpiler를 사용하지 않아도(Babel) ES6기능을 자바스크립트 엔진(브라우저/Node.js)에서 사용 가능

 


2. TypeScript 장점

  • 정적타입 : 명시적인 설정은 코드 가독성을 높여 디버깅이 쉬워짐
//Parameter에 타입을 정의
function sum(a: number, b: number) {
  return a + b;
}

sum('x', 'y');
// error TS2345: Argument of type '"x"' is not assignable to parameter of type 'number'.

 

 

  • 도구의 지원 : IDE(통합개발환경)을 포함한 다양한 도구의 지원을 받음, IDE에 타입정보를 제공하므로 IntelliSense, Code Assist, Type Check, Refectoring을 수준높게 활용
  • 객체지향 프로그래밍 지원 : Interface, Generic 등 객체지향 프로그래밍 지원으로 프로젝트를 쉽게 구성하도록 지원 (Java/C#)
  • ES6 / ES Next 지원 : 표준화가 유력한 스펙을 선제적으로 도입하므로, 새로운 스펙의 유용한 기능을 안전하게 도입하기에 유리

 

 


3. 개발환경 구축 

  • Node.js 설치
  • Transpiling : TypeScript 컴파일러를 통해 자바스크립트로 파일 변환 (.ts)
//1. typescript 설치
$ npm install -g typescript

//2. 설치버전확인
$ tsc -v

//3. transpiling : tsc 명령어 뒤에 transpiling 대상 파일명 지정 (.ts 생략가능)
$ tsc person

//4. 자바스크립트 ES6버전 변경 : 자바스크립트 버전은 ‘ES3’(default),‘ES5’,‘ES2019’,‘ESNEXT’
$ tsc person -t ES2015

//5. transpling person.js 실행
$ node person

// Class 예시
class Person {
    constructor(name) {
        this.name = name;
    }
    sayHello() {
        return "Hello, " + this.name;
    }
}
const person = new Person('Lee');
console.log(person.sayHello());

//6. tsconfig.json : tsc 옵션 설정파일 생성 (옵션지정 자동화)
$ tsc --init

//7. tsconfig.json 적용
$ tsc

//8. Transpiling 대상 파일 내용 변경시 감지하여 자동으로 Transpiling
$ tsc --watch
21:23:30 - Compilation complete. Watching for file changes.