TypeScript 增量严格性

14
我有一个相当大的TypeScript项目,我希望让它更加严格。特别是,在许多地方存在空值检查问题,因此我想使用"strict null-checks"选项。然而,有成千上万个错误,无法立即修复。
但是,当我编写新代码时,我想对非空类型进行严格处理,以免增加混乱。有没有办法逐步改进TypeScript项目的严格性,使所有新代码都具有严格的空值检查?

1
最简单的方法就是忽略当前错误数量,只需确保它们不会增加。TypeScript 错误不应该阻止发射。如果你正在进行某种 CI,可以获取 TypeScript 错误日志并进行某种 sed 操作以消除“已批准”的错误。 - Asad Saeeduddin
1
我认为在这里最好的方法是使用两个不同的 tsconfig.json 文件,一个用于新代码严格模式,另一个用于旧代码。如果您可以将源代码分成不同的库,那么最好(输出目录可以相同),否则,您可能可以通过 filesincludeexclude 的组合来实现。 - Nitzan Tomer
2
“实际上如何通过TypeScript的strict标志来提高类型安全性”文章中提到:“仅手动启用noImplicitAny标志就需要大约400个工程师小时才能完成我们的代码库。这个过程分散在150天内完成。”因此,显然...只有将项目拆分为子库才能完成,但如果您有一个庞大的项目,这可能需要很长时间。 - maxime1992
3个回答

6

您可以使用typescript-strict-plugin,它允许您在特定文件或目录中启用严格模式。

1.安装包

npm i -D typescript-strict-plugin

2. 将插件添加到你的tsconfig.json文件中

{
  "compilerOptions": {
    //...
    "strict": false,
    "plugins": [
      {
        "name": "typescript-strict-plugin",
      }
    ]
  }
}

3. 使用@ts-strict注释标记你想要进行严格化的文件

之前:

//no strict comment here
...
const name: string = null; // no error here

之后:

//@ts-strict
...
const name: string = null; // TS2322: Type 'null' is not assignable to type 'string'.

3

我认为最优解是通过创建一个新的tsconfig.json文件并启用strictNullChecks选项,然后在IDE中使用它。

  1. 当创建新功能时,在IDE中会出现strictNullChecks错误,这是可以接受的。
  2. 当重构现有代码时,出现的strictNullChecks错误将促使您修复代码。因此,源代码将逐渐迁移到完全启用strictNullChecks。

注:strictNullChecks是TypeScript编译器提供的一种特性,可以帮助开发人员更好地处理变量为空的情况。


0

创建两个TS配置文件:

  • tsconfig.json
    • 非严格的TS检查
    • include条目包含旧源代码库中所有路径或通配符。只需几行代码即可轻松获取它们。
  • tsconfig-strict.json
    • 严格的TS检查
    • include条目包含整个代码库
    • 继承tsconfig.json以避免重复

在开发过程中使用第一个,在生产环境中或编程检查严格错误时使用第二个(例如tsc --project tsconfig-strict.json)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接