【问题标题】:Enforce explicit function return type annotations?强制执行显式函数返回类型注释?
【发布时间】:2019-06-14 15:49:26
【问题描述】:

我想禁用在 typescript 中使用“any”的功能。比如我有如下函数

func() {
   return true
}

我想要求它是这样的

func(): boolean {
    return true
}

我知道 TSLint 可以检查这一点,但我可以忽略它并仍然编译。无论如何都需要这个才能在 TSConfig 文件中编译?

【问题讨论】:

  • 你试过设置"noImplicitAny": true吗?
  • 实际上,这些代码示例都没有使用any 类型。在这两种情况下,返回类型都是boolean
  • 可以选择 tslint 吗?你没有任何选择。或者,no-implict-any 的 tsconfig 在大多数情况下工作得很好,同时仍然允许显式转换为任何情况。
  • 听起来像是 XY 问题。 mywiki.wooledge.org/XyProblem
  • “我可以忽略它并仍然编译”是 TypeScript 的工作方式,除非您启用 --noEmitOnError 配置选项。也许你应该配置你的构建系统,这样如果 tslint 失败,你就不会生成输出文件。

标签: typescript


【解决方案1】:

不,函数返回类型是在打字稿中推断出来的。编译器本身没有关闭函数类型推断的设置。如打字稿存储库中的this issue 所述,已请求并拒绝此功能。

但是,当没有为函数指定类型定义时,您最喜欢的 lint 工具会发出警告。为了完整起见,我将提供此信息。

tslint

该规则称为typedef。将以下行添加到您的 tslint 配置中

"typedef": [ true, "call-signature", "arrow-call-signature" ]

eslint

typescript-eslint 插件有这个规则叫做explicit-function-return-type。 (本人不使用eslint,无法提供配置说明,欢迎大家编辑)

【讨论】:

  • 注意:tslint 现已弃用,应改用typescript-eslint
猜你喜欢
  • 2018-01-19
  • 1970-01-01
  • 2018-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
相关资源
最近更新 更多