Javascript 为什么我必须为“常规”指定类型;常数;变量,但不适用于;常数;“中定义的变量”;至于;循环?
虽然TypeScript可以推断某些值的类型,但所有TypeScriptJavascript 为什么我必须为“常规”指定类型;常数;变量,但不适用于;常数;“中定义的变量”;至于;循环?,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变量 问题是,当我尝试时,我出现了以下错误: 错误
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
循环。原因是你不能将键约束到JUtkeyof t
。但是使用for…of
似乎应该允许您对数组类型进行注释,即使它是多余的。嗯……我猜……我们将看看是否得到任何答案。“这将是无用的,因为我们已经知道了类型”似乎适用于推断相同类型的类型注释的任何使用。例如,let foo:string=“bar”
与let foo=“bar”
相同,但我不会将注释称为“无用”没错。@jcalz你是对的,“多余”可能是个更好的词,我认为它更符合我想说的。@EnzoBaldisserri在这种情况下,也许你应该编辑你的答案以使用更好的词。:@MarkReed你完全正确!只是解决了这个问题。