# TypeScript 디자인 목표

https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals

# Goals

  1. 오류가 발생할 가능성이 있는 구조를 정적으로 식별합니다.
  2. 긴 코드를 위한 구조적 메커니즘을 제공합니다.
  3. 배포 프로그램의 런타임 오버헤드(간접적인 처리 시간 혹은 메모리)를 부과하지 않습니다.
  4. 깨끗하고, 자연스럽고, 인식 가능한 JavaScript 코드를 가능케 합니다.
  5. 구성 가능하고 쉽게 추론할 수 있는 언어를 만듭니다.
  6. 현재와 미래의 ECMAScript 제안을 따릅니다.
  7. 모든 JavaScript 코드의 런타임 동작을 유지합니다.
  8. 표현식 수준의 문법을 추가하는 걸 지양합니다.
  9. 일관되고, 완전히 삭제되고, 구조적인 타입 시스템을 사용합니다.
  10. 크로스 플랫폼 개발 툴이어야 합니다.
  11. TypeScript 1.0에서 큰 변화를 야기하지 않습니다.

# Non-Goals

  1. 기존 언어의 디자인을 그대로 모방합니다. 대신 JavaScript의 동작과 프로그램 작성자의 의도를 언어에서 가장 타당한 가이드로 사용합니다.
  2. 프로그램의 런타임 성능을 적극적으로 최적화합니다. 대신 런타임 플랫폼의 성능 특성에 적합한 자연스러운 JavaScript 코드를 만듭니다.
  3. 정상적이거나 "provably 올바른" 타입 시스템을 적용합니다. 대신 정확성과 생산성 사이에서 균형을 맞춥니다.
  4. end-to-end 빌드 파이프라인을 제공합니다. 대신 시스템을 확장 가능하게 만들어서 외부 툴이 더 복잡한 빌드 워크플로우를 만들 수 있도록 합니다.
  5. 프로그램에서 런타임 타입 정보를 추가 혹은 의존하거나, 타입 시스템의 결과에 기반해 다른 코드를 만듭니다. 대신 런타임 메타데이터를 필요로 하지 않는 프로그래밍 패턴을 권장합니다.
  6. 추가적인 런타임 기능 또는 라이브러리를 제공합니다. 대신 기존 라이브러리를 만드는 데에 TypeScript를 사용합니다.
  7. 유저를 놀라게 할 behaviour를 도입합니다. 대신 일반적으로 사용되는 언어에서 채택된 패턴을 충분히 고려해야 합니다.
Last Updated: a year ago