有没有办法通过 tslint 规则在 Typescript 类上强制执行方法返回类型?

Posted

技术标签:

【中文标题】有没有办法通过 tslint 规则在 Typescript 类上强制执行方法返回类型?【英文标题】:Is there a way to enforce method return types on Typescript classes via a tslint rule? 【发布时间】:2017-08-05 05:51:23 【问题描述】:

我已经阅读了 tslint 规则 here,虽然它看起来像 the typedef rule 的 call-signature 选项是我想要的,但它并没有抱怨缺少回报输入。

有人知道在类方法上强制返回类型的规则(如果存在)吗?

【问题讨论】:

noImplicitAny 会更适合您吗? IMO,我想尽可能多地利用推断类型。 :) noImplicitAny 是编译器选项,而不是 linting 选项,并且不会防范这种情况。虽然我同意推断类型很好,但在某些情况下不清楚从方法返回什么类型的数据,这就是我们要强制执行它的原因。 看来call-signature 应该可以工作。也许您也在寻找arrow-call-signature @JKillian,我试过arrow-call-signature,这比我预想的要好得多,也就是说,它对我们大多数不声明返回类型的箭头函数感到不满——IIRC,角度样式指南指出它们不应该有返回类型,但老实说我不记得了。 【参考方案1】:

原来这可以通过:

"typedef": [
  true,
  "call-signature",
  "property-declaration"
]

更多信息:https://palantir.github.io/tslint/rules/typedef/

【讨论】:

这里请注意,"property-declaration" 不是实现 OP 最初目标所必需的;要求接口属性类型是一个离散选项。 "call-signature" 在这里很重要。 太酷了。感谢@runderworld 的澄清。

以上是关于有没有办法通过 tslint 规则在 Typescript 类上强制执行方法返回类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TSLint 中对 js 和 ts 使用相同的规则

无法通过 Angular 模板上的 Codelyzer 禁用 tslint 规则

让 TSLint 遵循我在 JS 文件中的规则

获取 tslint.json 文件中的所有 TsLint 规则

使用 Angular 7 和 `ng lint` 在 TypeScript 中自定义 TSLint 规则

tslint.json 在 VS 代码中不起作用