2015-12-11 86 views
21

我正在编写一个大的TypeScript类,并将noImplicitAny设置为true。有什么办法可以在同一行声明多个相同类型的变量吗?声明多个具有相同类型的TypeScript变量

我想用“x,y:number”这样的数字来声明x和y。但编译器不喜欢那个或我尝试过的其他东西。 “x:number; y:number”有更好的选择吗?

回答

21

没有任何语法能够以比只是两次写入类型更好的方式来完成此任务。

+12

谢谢。这太遗憾了。对于有很多变量的Web组件,声明每个单独的行是一种痛苦。对于基于表单的组件尤其如此。 – user934904

-2

let notes:string ='',signatureTypeName ='';

+0

这没有明确定义'signatureTypeName'为'string';它隐含地是一个“字符串”,因为它是分配给它的第一个值的类型。您最初可以将任何内容分配给'signatureTypeName'并将其编译。例如,你可以完成'let a:string =“”,b = 4',这打败了OP的问题,他/她表示他们希望两个变量都是相同的类型。 – mgthomas99

0

如果您可以接受孤儿变量。 Array destructuring可以做到这一点。

var numberArray:number[]; //orphan variable 
var [n1,n2,n3,n4] = numberArray; 
n1=123; //n1 is number 
n1="123"; //typescript compile error 

更新:这里产生,瞄准的ECMAScript 6

var numberArray; //orphan variable 
var [n1, n2, n3, n4] = numberArray; 
n1 = 123; //n1 is number 

当目标的ECMAScript 5时,喜欢Louis下面说,这不是漂亮的JS代码生成的JavaScript代码。

var numberArray; //orphan variable 
var n1 = numberArray[0], n2 = numberArray[1], n3 = numberArray[2], n4 = numberArray[3]; 
n1 = 123; //n1 is number 
+0

你可以通过var [n1,n2,n3,n4] = []作为数字[]来消除孤立变量;'但我仍然不喜欢这种方法,因为无论是用你的代码还是用我的修改,'tsc'为var [n1,n2,n3,n4] = ...'行生成4个无用的赋值。 – Louis

1

只是补充说,即使你做到以下几点:

let notes, signatureTypeName: string; 

它仍然无法正常工作。在这种情况下,notes被声明为any类型,signatureTypeName类型为string。您可以通过简单地悬停在变量上来验证所有这些,例如在Visual Studio Code中。声明的类型出现在弹出窗口中。

相关问题