TypeScript学习(二十一):TS设计目标 | 八月更文挑战

276 阅读2分钟

这是我参与8月更文挑战的第7天,活动详情查看:8月更文挑战

介绍

这篇文档罗列了 TS 语言的设计原则,其致力于汇总所有用以塑造这门语言的规则。但是,这些规则不是毫无遗漏的。其中,有些规则是主管的,并且有时候甚至是互相矛盾的。达到正确的平和针对一些特例做出正略的决策是成功设计一门语言的基础。

目标

  1. 静态地识别可能是错误的结构;
  2. 为大型项目代码提供结构化机制;
  3. 对编译后的项目不增加运行时开销;
  4. 编译干净、惯用、可识别的 JavaScript 代码;
  5. 提供一种可组合且易推理的语言;
  6. 符合当前和未来的 ECMAScript 规范;
  7. 维持 JavaScript 代码的所有运行时行为;
  8. 避免添加表达式级别的语法;
  9. 使用始终如一的、可擦除的结构化类型系统;
  10. 成为跨平台的开发工具;
  11. 从 TS 1.0 之后不造成实质性的 breaking changes。

非目标

  1. 完全模仿现有的语言。相反地,更应重视使用 JS 的运行机制和程序作者的意图;
  2. 过于激进地优化程度的运行时功能。相反地,编译适用于各种运行时平台的性能特性的惯用 JS 代码;
  3. 提供健或“可能”健全的类型系统。相反地,平衡正确性与生产力;
  4. 提供端到端的构建流水线。相反地,一个可扩展的系统可以借助外部工具在更复杂的构建场景中使用。
  5. 添加或者依赖运行时的类型信息,或者基于不同的类型系统产生不同的 JS 代码。相反地,应当鼓励不引用运行时元数据的编程模式;
  6. 提供额外的运行时函数或库。相反地,使用 TS 描述现存的库;
  7. 引入一些使用户感到意外的语言行为。相反地,应该适当参考其他常用语言所采用的模式。