ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Modern JavaScript TypeScript
    FrontEnd/TypeScript 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.

     

    댓글

Designed by Tistory.