연습장

02. 환경 구축 본문

TypeScript

02. 환경 구축

js0616 2024. 8. 26. 12:44

https://poiemaweb.com/typescript-introduction

 

TypeScript - Intro & Install | PoiemaWeb

TypeScript 또한 AltJS의 하나로써 자바스크립트(ES5)의 Superset(상위확장)이다. C#의 창시자인 덴마크 출신 소프트웨어 엔지니어 Anders Hejlsberg(아네르스 하일스베르)가 개발을 주도한 TypeScript는 Microsoft

poiemaweb.com

 

 

1. node.js 설치

 

2. TypeScript 컴파일러 설치 및 사용법

$ npm install -g typescript

 

3. 버전 확인

tsc -v

 

TypeScript 컴파일러(tsc)는 TypeScript 파일(.ts)을 자바스크립트 파일로 트랜스파일링한다.

  • TypeScript 컴파일러는 TypeScript 파일을 자바스크립트 파일로 변환
  • 컴파일보다는 트랜스파일링(Transpiling)이 보다 적절한 표현이다.

4. 사용법

 

// person.ts
class Person {
    private name: string;

    constructor(name: string) {
        this.name = name;
    }

    sayHello() {
        return "Hello, " + this.name;
    }
}

const person = new Person('Lee');

console.log(person.sayHello());

 

tsc 명령어 뒤에 트랜스파일링 대상 파일명을 지정한다. 이때 확장자 .ts는 생략할 수 있다.

$ tsc person

 

트랜스파일링 실행 결과, 같은 디렉터리에 자바스크립트 파일(person.js)이 생성된다.

// person.js
var Person = /** @class */ (function () {
    function Person(name) {
        this.name = name;
    }
    Person.prototype.sayHello = function () {
        return "Hello, " + this.name;
    };
    return Person;
}());
var person = new Person('Lee');
console.log(person.sayHello());


 

이때 트랜스파일링된 person.js의 자바스크립트 버전은 ES3이다. 

 

자바스크립트 버전을 변경하려면 컴파일 옵션에 --target 또는 -t를 사용한다. 

예를 들어, ES6 버전으로 트랜스파일링을 실행하려면 아래와 같이 옵션을 추가한다.

$ tsc person -t ES2015

 

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

 

확실히 class 문법 (ES6) 을 사용하는게 보인다. 


tsconfig.json 생성

tsc 옵션 설정 파일을 생성하여 옵션을 지정해 놓을 수 있다.

$ tsc --init

 

tsc 명령어 뒤에 파일명을 지정하면 tsconfig.json이 무시된다. 따라서 tsconfig.json 을 적용하려면 다음과 같이 사용

tsc

 

 

자동 감지

트랜스파일링 대상 파일의 내용이 변경되었을 때, 이를 감지하여 자동으로 트랜스파일링이 실행된다.

 

명령어

tsc -w

 

tsconfig.json에 watch 옵션을 추가

-> 안되는거같은데 -> 커맨드라인에서만 쓰라고 빨간 밑줄이 그어진다. -> package.json 에서 빌드할때 옵션으로 넣는거 같은데 나중에 다시 확인 

 


tsconfig 관련 옵션 

 

https://joshua1988.github.io/ts/config/tsconfig.html#%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%84%A4%EC%A0%95-%ED%8C%8C%EC%9D%BC-tsconfig-json

 

tsconfig | 타입스크립트 핸드북

타입스크립트 설정 파일 (tsconfig.json) 타입스크립트 설정 파일은 타입스크립트를 자바스크립트로 변환할 때의 설정을 정의해놓는 파일입니다. 프로젝트에서 tsc라는 명령어를 치면 타입스크립트

joshua1988.github.io

 

컴파일 대상 경로

{
  "files": ["app.ts", "./utils/math.ts"],   // 파일 경로 지정
  "include": ["src/**/*"],                       // 변환할 폴더를 지정
  "exclude": ["node_modules"]          // 변환하지 않을 폴더 지정
}

컴파일 대상 경로를 정의하는 속성의 우선 순위 files > include = exclude

 

{
  "target": "esnext",                                  // js 버전
  "lib": ["es2015", "dom", "dom.iterable"]  // 라이브러리
}

 

 

gpt 추천

{
  "compilerOptions": {
    "target": "ES6",                           // ECMAScript 6으로 컴파일
    "module": "commonjs",                      // CommonJS 모듈 시스템 사용
    "outDir": "./dist",                        // 컴파일된 JavaScript 파일을 dist 디렉토리에 저장
    "rootDir": "./src",                        // TypeScript 소스 파일의 루트 디렉토리
    "strict": true,                            // 엄격한 타입 검사를 활성화
    "esModuleInterop": true,                   // ES 모듈과 CommonJS 모듈 간의 호환성 활성화
    "skipLibCheck": true,                      // 라이브러리 파일의 타입 검사 건너뛰기
    "sourceMap": true,                         // 소스 맵 파일 생성
    "baseUrl": "./",                           // 상대 경로의 기준이 되는 디렉토리
    "paths": {
      "@components/*": ["src/components/*"], // 모듈 경로 별칭 설정
      "@utils/*": ["src/utils/*"]
    }
  },
  "include": [
    "src/**/*"                                 // src 디렉토리의 모든 파일을 포함
  ],
  "exclude": [
    "node_modules",                            // node_modules 디렉토리는 제외
    "dist"                                     // dist 디렉토리는 제외
  ]
}

 

 

my-project/
├── src/
│   ├── components/
│   │   ├── Button.tsx
│   │   └── Header.tsx
│   ├── utils/
│   │   ├── formatDate.ts
│   │   └── mathUtils.ts
│   ├── index.ts
│   └── app.ts
├── dist/                     # 컴파일된 JavaScript 파일이 저장되는 디렉토리
├── node_modules/             # npm 패키지 디렉토리
├── .gitignore                 # Git 무시 파일 설정
├── package.json              # 프로젝트 설정 파일
├── tsconfig.json             # TypeScript 설정 파일
└── README.md                 # 프로젝트 설명 파일

 

'TypeScript' 카테고리의 다른 글

06. 제네릭  (0) 2024.08.27
05. 인터페이스  (0) 2024.08.27
04. 클래스  (0) 2024.08.26
03. 정적 타이핑  (0) 2024.08.26
01. 타입스크립트 왜?  (0) 2024.08.26