如何使无法访问的代码警告在 VSCode 中显示为错误?

How to make unreachable code warnings to be shown as errors in VSCode?

我在项目的tsconfig.json中配置了"allowUnreachableCode": false,下面的代码会在VSCode中显示一个警告:

const fn = () => {
  return
  //  no-unreachable warning
  console.log()
}

如何让它显示为错误?

短版

将 VS Code 设置中的 reportStyleChecksAsWarnings 设置为 false

长版

如果您检查 VS Code IDE 的源代码,特别是 typeScriptServiceClientHost 模块,您会发现 TypeScript 诊断错误 #7027 包含在以下 Set(上面的评论不言自明):

// Style check diagnostics that can be reported as warnings
const styleCheckDiagnostics = new Set([
    ...errorCodes.variableDeclaredButNeverUsed,
    ...errorCodes.propertyDeclaretedButNeverUsed,
    ...errorCodes.allImportsAreUnused,
    ...errorCodes.unreachableCode,
    ...errorCodes.unusedLabel,
    ...errorCodes.fallThroughCaseInSwitch,
    ...errorCodes.notAllCodePathsReturnAValue,
]);

然后在isStyleCheckDiagnostic方法中使用这个Set定义如下:

private isStyleCheckDiagnostic(code: number | undefined): boolean {
    return typeof code === 'number' && styleCheckDiagnostics.has(code);
}

反过来,在 getDiagnosticSeverity 方法中使用它来确定错误的严重性。从下面可以看出,严重性设置为 vscode.DiagnosticSeverity.Warning;:

if (this.reportStyleCheckAsWarnings
    && this.isStyleCheckDiagnostic(diagnostic.code)
    && diagnostic.category === PConst.DiagnosticCategory.error
) {
    return vscode.DiagnosticSeverity.Warning;
}

请注意,这仅在 reportStyleChecksAsWarningstrue 时发生(默认为 which is)。由于它暴露给设置,打开 settings.json(你可能可以用编辑器来完成,但我更喜欢这种方式)并添加:

"typescript.reportStyleChecksAsWarnings": false

重新启动主机,瞧,漂亮的波浪线出现了,报告代码有问题: