GitHub上のmicrosoft/TypeScript Wiki にある"TypeScript Design Goals"の和訳です。TypeScript という言語が目指しているもの(Goals)と目指していないもの(Non-goals)がまとめられています。
(原文) TypeScript Design Goals · microsoft/TypeScript Wiki
https://github.com/Microsoft/TypeScript/wiki/TypeScript-Design-Goals
#TypeScript 設計目標
(2020/2/27)
##前書き
この文書は、私達が TypeScript 言語の基礎にした基本的な設計原理の概要を説明するものです。完全ではありませんが、言語を形作ってきた多くの決定の根拠となる規則の要約をねらいとしています。これら規則のいくらかは主観的で、また時には互いに矛盾しています ― 適切なバランスを保ち適切な例外を作る事は、プログラミング言語がいかに成功するかどうかの本質的要素なのです。
##目標(Goals)
- エラーになる可能性のある構成要素の静的な識別。
- より巨大なコードへの構造化機構の提供。
- 生成されたプログラムに実行時のオーバーヘッドを課さない事。
- 簡潔で、慣用的かつ、分かりやすい JavaScript コードの生成。
- 組み合わせ可能で推論が容易な言語の作成。
- 現在および将来の ECMAScript の提案(proposals)に準拠している事。
- 全ての JavaScript コードの実行時の振る舞いを棄損しない事。
- 式レベルでの文法の追加を避ける事。
- 矛盾の無い、完全に消去可能な、構造化された型システムの使用。
- クロスプラットフォームな開発ツールである事。
- TypeScript 1.0 からの重大な破壊的変更を引き起こさない事。
##目標でないもの(Non-goals)
- 既存言語の設計の完全なる模倣。代わりに、JavaScript の振る舞いとプログラム製作者の意図をこの言語の最も意味を成す指標として考える。
- プログラム実行時のパフォーマンスの積極的な最適化。代わりに、実行環境の性能特性と上手く調和する、慣用的な JavaScript コードを生成する。
- 健全、もしくは「証明可能なほどに正しい」型システムの適用。代わりに、正確さと生産性のつり合いを取る。
- エンドツーエンドのビルドパイプラインの提供。代わりに、より複雑なビルド・ワークフローのために外部ツールがコンパイラを使用できるよう、システムを拡張性のあるものにする。
- プログラム実行時に型情報を追加したり、それに依存する事。または型システムの結果によって異なるコードを生成する事。代わりに、実行時のメタデータを必要としないプログラミングパターンを奨励する。
- 実行時の追加的機能やライブラリの提供。代わりに、既存ライブラリの記述に TypeScript を使用する。
- ユーザーを驚かせるような振る舞いの導入。代わりに、他の一般的な言語で採用されているパターンに対して十分な考慮をする。