♣️前端代码规范 —— TS
00 分钟
2022-8-23
2022-9-15
type
status
date
slug
summary
tags
category
icon
password
Edited
Sep 15, 2022 01:16 PM
Created
Aug 22, 2022 07:53 AM

编码规约

notion image
 
  • 【强制】重载的函数必须写在一起
  • 【推荐】简单数组类型的定义使用 T[],复杂类型使用 Array<T>
  • 【推荐】使用 TypeScript 注释指令时需跟随描述说明
    • TS 提供了一些指令注释,可用于忽略 TypeScript 编译器在编译阶段的错误,如下:
  • 【推荐】如果类的属性是一个字面量,则推荐使用只读属性 readonly 而不是 getter
  • 【强制】类型断言必须使用 as Type
      1. 强制对类型的断言统一使用 as Type 风格而非 <Type> ,后者容易与 JSX 产生混淆。
      1. 对象字面量禁止类型断言,断言成 any 除外,对象字面量应该直接声明
  • 【推荐】优先使用 interface定义类型
  • 【推荐】设置类成员的可访问性
  • 【强制】interface/type 类型中使用一致的成员分隔符
  • 【推荐】类的成员应按照固定的先后顺序排列
      1. 类的静态方法 / 属性(static)优先于实例的方法 / 属性(instance)
      1. 属性(field)优先于构造函数(constructor),优先于方法(method)
      1. 公开的成员(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 定义时必须声明成员的类型
 

参考链接:
  1. f2e-spec/6.typescript-style-guide.md at main · alibaba/f2e-spec (github.com)
 
上一篇
Tools Recommended —— json2ts
下一篇
前端代码规范 —— 注释

评论
Loading...