为什么必须为常规“ const”变量指定类型,而不为“ for”循环中定义的“ const”变量指定类型?

时间:2019-05-21 16:43:19

标签: javascript typescript types typescript-typings

尽管TypeScript可以推断某些值的类型,但是所有TypeScript const变量需要一个类型定义:

const x: string = "Hello World!";

删除类型定义时:

const x = "Hello World!";

您收到类似以下内容的错误:

TypeScript Error

很自然地,我假设在const循环中定义的for变量也是如此。

问题是当我尝试时,出现此错误:

  

错误TS2483:“ for ... of”语句的左侧不能使用类型注释。

     

for(const [series_name,series_data]:Object.entries(SERIES)的[string,SeriesObject]){   ~~~~~~~~~~~~~~~~~~~

有人可以解释为什么不允许这样做吗?

注意::这个问题仅关于const变量,不是 let变量。

1 个答案:

答案 0 :(得分:2)

我假设您正在使用TSLint整理代码。

Typescript不需要您将类型放在const变量上,但是TSLint的 typedef 规则却需要。您将能够在不使用类型的情况下编译代码,并且变量的类型将为Hello World,如使用const声明的那样。 Il将可分配给string

但是,TypeScript不支持将类型放入for循环中。无论如何,这将是无用的,因为我们已经知道要循环通过的数组的类型。

如果不想被迫在变量上输入类型,只需禁用 typedef TSLint规则的“ variable-declaration”选项。