Skip to content

编码规范

这个编码规范是给 TypeScript 开发团队在开发 TypeScript 时使用的。 对于使用 TypeScript 的普通用户来说不一定适用,但是可以做为一个参考。

命名

  1. 使用 PascalCase 为类型命名。
  2. 不要使用I做为接口名前缀。
  3. 使用 PascalCase 为枚举值命名。
  4. 使用 camelCase 为函数命名。
  5. 使用 camelCase 为属性或本地变量命名。
  6. 不要为私有属性名添加_前缀。
  7. 尽可能使用完整的单词拼写命名。

组件

  1. 1 个文件对应一个逻辑组件 (比如:解析器,检查器)。
  2. 不要添加新的文件。 :)
  3. .generated.*后缀的文件是自动生成的,不要手动改它。

类型

  1. 不要导出类型/函数,除非你要在不同的组件中共享它。
  2. 不要在全局命名空间内定义类型/值。
  3. 共享的类型应该在types.ts里定义。
  4. 在一个文件里,类型定义应该出现在顶部。

nullundefined

  1. 使用 undefined,不要使用 null。

一般假设

  1. 假设像 Nodes,Symbols 等这样的对象在定义它的组件外部是不可改变的。不要去改变它们。
  2. 假设数组是不能改变的。

  1. 为了保持一致,在核心编译链中不要使用类,使用函数闭包代替。

标记

  1. 一个类型中有超过 2 个布尔属性时,把它变成一个标记。

注释

为函数,接口,枚举类型和类使用 JSDoc 风格的注释。

字符串

  1. 使用双引号""
  2. 所有要展示给用户看的信息字符串都要做好本地化工作(在 diagnosticMessages.json 中创建新的实体)。

错误提示信息

  1. 在句子结尾使用.
  2. 对不确定的实体使用不定冠词。
  3. 确切的实体应该使用名字(变量名,类型名等)
  4. 当创建一条新的规则时,主题应该使用单数形式(比如:An external module cannot...而不是 External modules cannot)。
  5. 使用现在时态。

错误提示信息代码

提示信息被划分类成了一般的区间。如果要新加一个提示信息,在上条代码上加 1 做为新的代码。

  • 1000 语法信息
  • 2000 语言信息
  • 4000 声明生成信息
  • 5000 编译器选项信息
  • 6000 命令行编译器信息
  • 7000 noImplicitAny 信息

普通方法

由于种种原因,我们避免使用一些方法,而使用我们自己定义的。

  1. 不使用 ECMAScript 5 函数;而是使用core.ts这里的。
  2. 不要使用for..in语句;而是使用ts.forEachts.forEachKeyts.forEachValue。注意它们之间的区别。
  3. 如果可能的话,尝试使用ts.forEachts.mapts.filter代替循环。

风格

  1. 使用 arrow 函数代替匿名函数表达式。
  2. 只要需要的时候才把 arrow 函数的参数括起来。 比如,(x) => x + x是错误的,下面是正确的做法:
    1. x => x + x
    2. (x,y) => x + y
    3. <T>(x: T, y: T) => x === y
  3. 总是使用{}把循环体和条件语句括起来。
  4. 开始的{总是在同一行。
  5. 小括号里开始不要有空白. 逗号,冒号,分号后要有一个空格。比如:
    1. for (var i = 0, n = str.length; i < 10; i++) { }
    2. if (x < 10) { }
    3. function f(x: number, y: string): void { }
  6. 每个变量声明语句只声明一个变量 (比如 使用 var x = 1; var y = 2; 而不是 var x = 1, y = 2;)。
  7. else要在结束的}后另起一行。
编码规范 has loaded