From 0fd297c2fefb6f4fd3e7d511a8221f4e4fca95a8 Mon Sep 17 00:00:00 2001 From: TinkerRobot Date: Thu, 2 Sep 2021 16:50:08 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20TypeScript=20=E9=A3=8E=E6=A0=BC?= =?UTF-8?q?=E6=8C=87=E5=8D=97=EF=BC=9A=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=A0=A1?= =?UTF-8?q?=E5=AF=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- google-typescript-styleguide/language.rst | 7 +++---- google-typescript-styleguide/preface.rst | 4 ++-- google-typescript-styleguide/syntax.rst | 13 +++++++++---- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/google-typescript-styleguide/language.rst b/google-typescript-styleguide/language.rst index b85814d..e861643 100644 --- a/google-typescript-styleguide/language.rst +++ b/google-typescript-styleguide/language.rst @@ -8,7 +8,6 @@ 限制属性、方法以及类型的可见性有助于代码解耦合。因此: - * 应当尽可能限制符号的可见性。 * 可以将私有方法在同一文件中改写为独立于所有类以外的内部函数,并将私有属性移至单独的内部类中。 * 在 TypeScript 中,符号默认的可见性即为 ``public`` ,因此,除了在构造函数中声明公开( ``public`` )且非只读( ``readonly`` )的参数属性之外,不要使用 ``public`` 修饰符。 @@ -46,6 +45,8 @@ // 应当这样做! const x = new Foo(); +没有必要提供一个空的或者仅仅调用父类构造函数的构造函数。在 ES2015 标准中,如果没有为类显式地提供构造函数,编译器会提供一个默认的构造函数。但是,含有参数属性、访问修饰符或参数装饰器的构造函数即使函数体为空也不能省略。 + .. code-block:: typescript // 不要这样做!没有必要声明一个空的构造函数! @@ -189,7 +190,7 @@ 取值器与设值器(存取器) ================================================================================ -可以在类中使用存取器,其中取值器方法必须是纯函数(即结果必须是一致的,且不能有副作用)。存取器还可以用于隐藏内部复杂的实现细节。 +可以在类中使用存取器,其中取值器方法必须是纯函数(即结果必须是一致稳定的,且不能有副作用)。存取器还可以用于隐藏内部复杂的实现细节。 .. code-block:: typescript @@ -882,8 +883,6 @@ } } -Do not use bind in the expression that installs an event handler, because it creates a temporary reference that can't be uninstalled. - 不要在注册事件句柄的表达式中使用 ``bind`` ,这会创建一个无法卸载的临时引用。 .. code-block:: typescript diff --git a/google-typescript-styleguide/preface.rst b/google-typescript-styleguide/preface.rst index 35025b5..d4dc488 100644 --- a/google-typescript-styleguide/preface.rst +++ b/google-typescript-styleguide/preface.rst @@ -22,7 +22,7 @@ 上次更新日期 ================================================================================ -2021 年 08 月 08 日。 +2021 年 09 月 02 日。 .. _ts-about-author: @@ -50,4 +50,4 @@ 修订历史 ================================================================================ -* **2021 年 08 月 08 日:** `TinkerRobot `_ 提交了第一个版本。 +* **2021 年 09 月 02 日:** `TinkerRobot `_ 提交了第一个版本。 diff --git a/google-typescript-styleguide/syntax.rst b/google-typescript-styleguide/syntax.rst index 5d33659..261fc16 100644 --- a/google-typescript-styleguide/syntax.rst +++ b/google-typescript-styleguide/syntax.rst @@ -77,6 +77,7 @@ 一些库可能会在导入命名空间时使用某种特定的前缀,这与这里规定的命名规范有所冲突。然而,由于其中的一些库已经被广泛使用,因此遵循它们的特殊规则反而能够获得更好的可读性。这些特例包括: * `jQuery `_,使用 ``$`` 前缀。 + * `three.js `_,使用 ``THREE`` 前缀。 .. _ts-constants: @@ -115,7 +116,7 @@ 如果某个值在程序的整个运行生命周期中会被多次实例化或被用户以任何方式进行修改,则它必须使用驼峰式命名法。 -如果某个值是作为某个的接口实现的箭头函数,则它也可以使用驼峰式命名法。 +如果某个值是作为某个接口的实现的箭头函数,则它也可以使用驼峰式命名法。 .. _ts-aliases: @@ -144,9 +145,13 @@ TypeScript 中的类型表达了丰富的信息,因此在起名时不应与类 这里有几个具体的例子: * 不要为私有属性或方法名添加下划线 `_` 前缀或后缀。 + * 不要为可选参数添加 `opt_` 前缀。 - * 关于在存取器中的特例,参见后文 :ref:`name-and-order-of-includes`。 -* 除非在项目中已成惯例,否则不要显式地标记接口类型(例如不要使用 ``IMyInterface`` 或者 ``MyFooInterface``)。在为类添加接口时,接口名称中应包含创建这一接口的原因。(例如,在为类 ``TodoItem`` 创建一个将其转为 JSON 格式以用于存储或者序列化的接口时,可以将这一接口命名为 ``TodoItemStorage``。) + + * 关于在存取器中的特例,参见后文 :ref:`name-and-order-of-includes` 。 + +* 除非在项目中已成惯例,否则不要显式地标记接口类型(例如不要使用 ``IMyInterface`` 或者 ``MyFooInterface`` )。在为类添加接口时,接口名称中应包含创建这一接口的原因。(例如,在为类 ``TodoItem`` 创建一个将其转为 JSON 格式以用于存储或者序列化的接口时,可以将这一接口命名为 ``TodoItemStorage`` 。) + * 对于 ``Observable`` 类型的值,通常的惯例是使用 ``$`` 前缀将其与一般类型的值进行区分,使之不致混淆。各个团队可以在与项目内部的现有做法保持一致的前提下,自行决定是否采用这一做法。 .. _ts-descriptive-names: @@ -165,7 +170,7 @@ TypeScript 中的类型表达了丰富的信息,因此在起名时不应与类 使用 UTF-8 文件编码。 -对于非 ASCII 字符,应使用实际的 Unicode 字符(例如 ``∞``)。对于非输出字符,使用对应的十六进制编码或 Unicode 转义编码(如 ``\u221e``),并添加注释进行说明。 +对于非 ASCII 字符,应使用实际的 Unicode 字符(例如 ``∞`` )。对于非输出字符,使用对应的十六进制编码或 Unicode 转义编码(如 ``\u221e`` ),并添加注释进行说明。 .. code-block:: typescript