상단

TypeScript (~.ts)


 

JavaScript의 상위 버전으로 ES7 이하의 표준을 포함 한다.

  • MS에서 개발하고 관리하는 오픈소스

  • 정적 타입 언어로 컴파일 필요

 

Node.js Modules


  • Package Manager

    • npm

    • yarn

    • pnpm

  • Excel 파일 관리

  • Text 파일 관리

  • REST API와 Web Service

  • Template

  • 암복호화

  • Logger

  • Database

  • TypeScript (--save-dev)

  • 문서 포맷 정리

    • eslint (--save-dev) : 코드 품질 향상

      • @typescript-eslint/parser

      • @typescript-eslint/eslint-plugin

      • .eslintrc.json 설정 파일

    • prettier 2.8.8 (--save-dev) : 포매터

    • reflect-metadata 0.1.13 : Decorators

  • 테스트 자동화

    • Mocha with Chai, Sinon

    • Mocha : Test Framework

    • Chai : Assertion library

    • Sinon : Test double

    • istanbul : Code Coverage

    • Vitest : Unit Test Framework

      • vitest.config.ts

  • 기타 미분류

 

VSCode


 

Code Convention

  • JSDoc 사용

  • ESLint 사용

  • TSLinit 사용

  • Prettier 사용

 

.vscode 환경 구성

  • .vscode/ 폴더

    • extensions.json

      {
        "recommendations": [
          "dbaeumer.vscode-eslint",
          "esbenp.prettier-vscode",
          "psioniq.psi-header"
        ]
      }
    • settings.json

      {
          "psi-header.config": {
              "forceToTop": true,
              "license": "Custom",
              "license-text": "GNU General Public License v3.0",
              "author": "pnuskgh",
              "authorEmail": "pnuskgh@gmail.com",
          },
          "psi-header.license-text": ["GNU General Public License v3.0"],
          "psi-header.templates": [
              {
                  "language": "*",
                  "template": [
                      "<>/<>",
                      "",
                      "@version <>",
                      "@license <>",
                      "@author <> <<>>"
                  ]
              }
          ],
      }
 

GitHub


 

GitHub 설정

  • Labels

    • bug

    • documentation

    • duplicate

    • enhancement

    • good first issue

    • help wanted

    • invalid

    • question

    • wontfix

  • Milestones

  • Pull Request Template 제작

    • .github/PULL_REQUEST_TEMPLATE.md

      ## 요약
      
      

      ## 작업 내용

      ## 참고 사항

      ## 관련 이슈 - Close #이슈번호

  • Issue Template 제작

    • "Settings > General > Feature > Issues > Set up templates" 메뉴

      • bug_report.md

      • feature_request.md

    • .github/ISSUE_TEMPLATE/~.md

      ---
      name: Bug template
      about: 버그 발생 시 사용하는 템플릿입니다
      title: "버그 리포트"
      labels: "\\U0001F41B BUG"
      assignees:
      
      ---
      
      # 버그 리포트
      
      ## 어떤 버그인가요?
      
      > 버그에 대해 알려주세요
      
      

      ## 어떤 상황에서 겪으셨나요? > 버그를 겪으신 상황을 알려주세요

      ## 참고할만한 자료가 있을까요? > 참고자료가 있다면 첨부해주세요

 

Git Convention

  • 형상 관리를 위한 branch 전략

    • master : 제품으로 출시될 수 있는 브랜치

    • develop : 다음 출시 버전을 개발하는 브랜치

    • feature : 기능을 개발하는 브랜치

    • release : 이번 출시 버전을 준비하는 브랜치

    • hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치

  • Merge Request > 동료 Review > Merge

  • Commit message 규칙

    • [Type] commit message

    • type

      • feature : 새로운 기능 추가

      • fix : 버그 수정

      • docs : 문서 업데이트

      • style : frontend의 style 수정

      • refactor : 코드의 리팩토링

      • test : 테스트코드 업데이트

      • env : 환경 구축

 

.github 환경 구성

  • .github/ 폴더

    • workflows/ 폴더

      • test.yaml : 테스트 자동화 설정

 

TypeScript 환경 구성


npm  install  typescript  --save-dev
npx  tsc  --version                  

npm  install  typescript  -g            #--- Global 환경에 설치
npm  list  -g                           #--- Global package 조회
npm  list  -g  --depth  0               #--- Global package 조회
tsc  --version

npm  install  ts-node  --save-dev
npm  install  tsconfig-paths  --save-dev
npm  install  tsc-alias  --save-dev

npm  install  @types/ejs  --save-dev
npm  install  @types/jquery  --save-dev
npm  install  @types/node  --save-dev
npm  install  @types/webpack  --save-dev

#--- 코드 자동 생성용
npm  install  class-transformer  --save #--- 역직열화
npm  install  reflect-metadata  --save  #--- Decorators
npm  install  ajv  --save               #--- JSON Schema Validator
npm  install  tslint  --save-dev
# eslint
# prettier
# mocha

tsc  --init                             #--- tsconfig.json 파일 생성
vi  tsconfig.json
  "compilerOptions": {
    "target": "es2016",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "commonjs",
    "rootDir": "./",
    "moduleResolution": "node",
    "baseUrl": "./",
    "paths": {},
    "rootDirs": [],
    "types": [ "node" ],
    "allowUmdGlobalAccess": true,
    "allowJs": true,
    "checkJs": true,
    "sourceMap": true,
    "removeComments": false,
    "noEmit": false,
    "esModuleInterop": true,
    "preserveSymlinks": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "strictFunctionTypes": true,
    "strictBindCallApply": true,
    "strictPropertyInitialization": true,
    "noImplicitThis": true,
    "alwaysStrict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "skipLibCheck": true
  },
  "include": [ "**/*.ts" ],
  "exclude": [ 
      ".gulp-scss-cache", ".nyc_output", ".vscode",
      "coverage", "dist", "library", 
      "logs", "manual", "node_modules", 
      "sessions", "themes", "upgrades", 
      "zzstudy", "zztest",
      "**/*.spec.ts"
  ]

vi  tslint.json

tsc                                     #--- 모든 *.ts 파일 컴파일
tsc  --project  tsconfig.json           #--- 모든 *.ts 파일 컴파일
tsc  -w                                 #--- 수정된 모든 *.ts 파일 컴파일

# zztest.ts 파일을 zztest.js 파일로 변환
# tsc  zztest.ts                          #--- 하나의 ts 파일 컴파일
 

TypeScript 언어 개요


//--- typeof
// string
// number
// boolean
// undefined
// function
// array : Array.isArray(~)

//---     JavaScript Built-in types : typescript types
// Number : number
// String : string
// BigInt : bigint
// Boolean : boolean
// Symbol : symbol
// Null : null
// Undefined : undefined
// Object : object
// : unknown
// : never
// : object literal
// : void
// : ~[] - 배열
// : [ ~, ~ ] - Tuples
// : (~: ~) => ~ - 함수
// : any

//--- Type과 interface
type MyBool = true | false;
type StringArray = Array;

interface User {
    name: string;
    id: number;
}

const user: User;

//---     Generic (Type)
interface Backpack {
  add: (obj: Type) => void;
  get: () => Type;
}

//--- Class
class VirtualPoint {
    x: number;
    y: number;
 
    constructor(x: number, y: number) {
        this.x = x;
        this.y = y;
    }
}

최종 수정일: 2024-09-30 12:26:18

이전글 :
다음글 :