首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注释分配给TypeScript和TSLint中的变量的函数

注释分配给TypeScript和TSLint中的变量的函数
EN

Stack Overflow用户
提问于 2016-05-22 13:06:32
回答 1查看 796关注 0票数 0

我有以下三个功能,除了一些非常小的差异之外,它们几乎是相同的:

代码语言:javascript
复制
function toInt1(x: string): number { return parseInt(x, 10); }

const toInt2 = function (x: string): number { return parseInt(x, 10); };

const toInt3 = (x: string): number => parseInt(x, 10);

现在我刚开始接触TypeScript,但是在JS中,我更喜欢第三个,因为它最简洁、最严格(没有this,没有函数名称的提升)。

然而,当我在这个规则中使用tslint (从表面上看,这似乎是合理的,但也许我错了……):

代码语言:javascript
复制
"typedef": [
  true,
  "call-signature",
  "parameter",
  "arrow-parameter",
  "property-declaration",
  "variable-declaration",
  "member-variable-declaration"
],

我得到这些关于toInt2toInt3的错误

代码语言:javascript
复制
expected variable-declaration: 'toInt2' to have a typedef
expected variable-declaration: 'toInt3' to have a typedef

似乎我可以通过复制所有类型来修复它:

代码语言:javascript
复制
const toInt2: (x: string) => number = function (x: string): number { return parseInt(x, 10); };
const toInt3: (x: string) => number = (x: string): number => parseInt(x, 10);

然而,这是非常冗长和没有吸引力的。这真的是最好的方法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-22 13:35:10

换行器希望为每个名称(变量)分配一个类型。一般来说,它可以从一项任务中计算出(推断)这种类型:

代码语言:javascript
复制
// const x: number = 10;
const x = 10; 
// const y: string = 'foo';
const y = 'foo';
// const z: (a: string) => number = (a: string) => parseInt(a);
const z = (a: string) => parseInt(a);

这个规则'variable-declaration'确保您不会让转换程序推断类型,但是您将显式地为任何varletconst声明编写类型签名(据我在文档中所能看到的)。这可以提高可读性(代码的读者无需进一步研究就知道每个变量的静态类型),但代价是为所有变量编写类型签名。

现在,要解决这个问题,您有两个选项:

  1. 在适当的情况下禁用规则内联
  2. 为此编写一个自订规则
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37374752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档