type
status
date
slug
summary
tags
category
icon
password
Edited
Sep 15, 2022 01:16 PM
Created
Aug 22, 2022 07:53 AM
编码规约
- 【强制】重载的函数必须写在一起
- 【推荐】简单数组类型的定义使用
T[]
,复杂类型使用Array<T>
- 【推荐】使用 TypeScript 注释指令时需跟随描述说明
TS 提供了一些指令注释,可用于忽略 TypeScript 编译器在编译阶段的错误,如下:
- 【推荐】如果类的属性是一个字面量,则推荐使用只读属性
readonly
而不是getter
- 【强制】类型断言必须使用
as Type
- 强制对类型的断言统一使用
as Type
风格而非<Type>
,后者容易与JSX
产生混淆。 - 对象字面量禁止类型断言,断言成 any 除外,对象字面量应该直接声明
- 【推荐】优先使用
interface
定义类型
- 【推荐】设置类成员的可访问性
- 【强制】interface/type 类型中使用一致的成员分隔符
- 【推荐】类的成员应按照固定的先后顺序排列
- 类的静态方法 / 属性(static)优先于实例的方法 / 属性(instance)
- 属性(field)优先于构造函数(constructor),优先于方法(method)
- 公开的成员(public)优先于受保护的成员(protected),优先于私有的成员(private)
- 【推荐】接口中的方法使用属性的方式定义
使用属性去定义接口中的方法,可以获得更严格的检查
- 推荐】初始化为
number/string/boolean
的变量或参数应避免显式的类型声明
- 【强制】禁止无意义的
void
类型
禁止在返回类型或泛型类型参数之外使用 void 类型,而且在返回类型中不应再与其他类型做联合或交叉
void 类型代表「无」或函数「不返回任何值」,隐式未定义类型代表函数返回「未定义的值 undefined」,所以 void 类型无法与除了 never 外的其他类型做联合、交叉
- 【强制】禁止使用 namespace 来定义命名空间
自定义 TypeScript 模块(module)和命名空间(namespace)已经不再推荐使用,首选 ES2015 的模块语法来导入导出。此规则仍然允许定义外部的模块或命名空间
- 【推荐】使用 ES2015 import 语法引入模块
- 【推荐】不建议将 this 赋值给其他变量
- 【推荐】当变量的值与类型声明相等时,优先使用
as const
- 【强制】禁止使用 module 来定义命名空间
- 【推荐】 加号
+
连接的两侧同为数字或同为字符串
- 【强制】禁止使用三斜杠语法
///
导入文件
- 【强制】类型声明时应正确添加空格间距
- 【强制】interface 和 type 定义时必须声明成员的类型
参考链接:
- 作者:JinSo
- 链接:https://jinso365.top/article/code-standards-ts
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。