Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我必须为“常规”指定类型;常数;变量,但不适用于;常数;“中定义的变量”;至于;循环?_Javascript_Typescript_Types_Typescript Typings - Fatal编程技术网

Javascript 为什么我必须为“常规”指定类型;常数;变量,但不适用于;常数;“中定义的变量”;至于;循环?

Javascript 为什么我必须为“常规”指定类型;常数;变量,但不适用于;常数;“中定义的变量”;至于;循环?,javascript,typescript,types,typescript-typings,Javascript,Typescript,Types,Typescript Typings,虽然TypeScript可以推断某些值的类型,但所有TypeScriptconst变量都需要类型定义: const x: string = "Hello World!"; const x = "Hello World!"; 删除类型定义时: const x: string = "Hello World!"; const x = "Hello World!"; 您会遇到如下错误: 因此,很自然地,我假设这同样适用于循环的中定义的const变量 问题是,当我尝试时,我出现了以下错误: 错误

虽然TypeScript可以推断某些值的类型,但所有TypeScript
const
变量都需要类型定义:

const x: string = "Hello World!";
const x = "Hello World!";
删除类型定义时:

const x: string = "Hello World!";
const x = "Hello World!";
您会遇到如下错误:

因此,很自然地,我假设这同样适用于
循环的
中定义的
const
变量

问题是,当我尝试时,我出现了以下错误:

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

for(const[series\u name,series\u data]:[string,SeriesObject]的Object.entries(series)){ ~~~~~~~~~~~~~~~~~~~~

有人能解释为什么这是不允许的吗


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

我假设您使用TSLint来过滤代码

Typescript不要求您在常量变量上输入类型,但TSLint的typedef规则要求您输入类型。您可以在不使用该类型的情况下编译代码,并且变量的类型将是
Hello World
,正如
const
所声明的那样。Il将可分配给
string

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


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

等等,您会在
const x=“Hello World!”上遇到一个错误
在普通的TypeScript中。看起来你在使用一些严格的可能?因为TypeScript的概念是围绕类型定义的,你知道,我真的无法解释为什么不允许这样做…在GitHub中我能找到的唯一相关问题是,这主要是关于
for…in
循环。原因是你不能将键约束到JUt
keyof t
。但是使用
for…of
似乎应该允许您对数组类型进行注释,即使它是多余的。嗯……我猜……我们将看看是否得到任何答案。“这将是无用的,因为我们已经知道了类型”似乎适用于推断相同类型的类型注释的任何使用。例如,
let foo:string=“bar”
let foo=“bar”
相同,但我不会将注释称为“无用”没错。@jcalz你是对的,“多余”可能是个更好的词,我认为它更符合我想说的。@EnzoBaldisserri在这种情况下,也许你应该编辑你的答案以使用更好的词。:@MarkReed你完全正确!只是解决了这个问题。