我们使用 TypeScript 的理由是,它有助于开发更快更安全的 app。
TypeScript 默认会做很多简化,这有助于开发者更容易的上手,但从长远来看,这些简化也会浪费不少的开发时间。
我们收集了一系列更为严格的 TypeScript 编码规则。只要你习惯一次,将来就会为你省下大量的编码时间。
any
这是一条很简单的规则,但长远看我们可以从中得到大大的好处。
永远都不要使用 “any”,永远!!!
原因很简单,因为不会有任何场景需要使用 “any” 来描述一个类型。如果你遇到了使用 any 的情况,可能是架构、代码遗留或者其他特殊问题。
使用 泛型,未知类型 或者 重载 然后就不用担心数据结构上会出现意料之外的问题了。而这类问题的调试成本通常都很高。
严格模式
TypeScript 有 “严格” 模式,不过遗憾的这个模式默认处于关闭状态。此模式下有一系列的规则可以让 TypeScript 用起来更安全舒适。如果不了解此模式,参考 这篇文章。
在 “严格” 模式下,你可以完全不用担心诸如 undefined is not a function、cannot read property X of null 等错误。你的类型定义将会无比的准确。
我得怎样做?
如果你开了一个新项目,享受 “严格模式” 的乐趣吧。
如果你有一个非 “严格模式” 的项目,然后你还想为此项目开启严格模式,那么你首先看到的就是一堆编译问题。如果没有编辑器的警告的话,编写满足严格模式的代码是一件非常困难的事情,所以你在打开严格模式后很可能会碰到很多有问题的地方。因此迁移整个项目到 “严格模式” 很快就能让人感到烦躁。
对此的建议是将这个大任务切割为小块儿。“严格” 模式由 6 条规则组成。可以启用其中的一条规则并且修复所有的错误。下一次启用第二条规则,修复错误并且循环往复。终有一天会完全迁移到 “严格” 模式的。
tsconfig.json 文件
{
// ...,
"compilerOptions": {
// 一组很溜的规则配置
"noImplicitAny": true,
"noImplicitThis": true,
"strictNullChecks": true,
"strictPropertyInitializatio