【问题标题】:Can you turn down strict mode et al on a single file or code block?您可以在单个文件或代码块上拒绝严格模式等吗?
【发布时间】:2021-01-01 18:40:14
【问题描述】:

我在 tsconfig.json 中打开了严格模式。我无法按照编译器的意愿弯曲我的代码的某些部分。除了关闭整个项目的设置之外,有没有一种方法可以标记特定文件甚至更好地标记代码块以降低严格性?

所以我在想这样的事情。

function foo() {
 // implicitAny not allowed here 

/// noImplicitAny false

 // implicitAny allowed here 

/// noImplicitAny true
}

我认为triple dash directives 可能会有所帮助,但他们似乎没有。

谢谢:-)

【问题讨论】:

  • 不,但是编写严格的 TypeScript 确实不难——你到底有什么问题? noImplicitAny 是最容易修复的(只需在必要时粘贴 : any: never: unknown
  • 嗨。这是当前的问题,但它同样是关于了解 TS 可以做什么。 stackoverflow.com/questions/63893394/…
  • @Tân ECMAScript 严格模式在很大程度上与这个问题无关:TypeScript 的tsc 有许多“严格”选项,ECMAScript 严格模式只是其中之一。 OP 主要询问noImplicitAny,这与 ECMAScript 的严格模式完全无关。
  • 我认为这个问题的答案很好地解释了这个问题。理解它,不要试图解决它。 Afaik,基于发现的一些 github 问题,目前无法针对特定文件关闭 typescripts 严格模式。

标签: typescript


【解决方案1】:

不,目前无法执行此操作。

有关上下文,请参阅此 TypeScript 问题,将其作为未来可能的功能进行跟踪:https://github.com/Microsoft/TypeScript/issues/28306

该问题还指出了一些可能对您有用的解决方法,例如创建一个包含整个项目的非严格主 tsconfig 文件,然后从该文件继承并仅为其启用严格模式的本地严格配置自己列出的文件。这不是每个文件,维护起来有点麻烦,但它可能会有所帮助。

否则,如果您需要禁用对特定代码部分的检查,则可以通过在任何地方将参数和变量的类型显式设置为any 来避免几乎所有严格的输入错误。一般来说,当然最好妥善处理这些问题,因为大多数严格模式错误都是您应该注意的真实错误。

【讨论】:

    猜你喜欢
    • 2019-04-16
    • 2013-12-06
    • 1970-01-01
    • 2018-12-08
    • 2015-11-07
    • 1970-01-01
    • 2012-01-02
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多