我正在编写一个大型的TypeScript类,并且我将noImplicitAny设置为true。有没有办法在同一行上声明相同类型的多个变量?
我想将x和y声明为数字,例如“x,y:number”。但是编译器不喜欢那个或者我尝试过的任何其他东西。是否有更好的替代“x:number; y:number”?
答案 0 :(得分:43)
没有任何语法能够以更好的方式完成此任务,而不仅仅是编写类型两次。
答案 1 :(得分:9)
是的,您可以像这样:-)一行
public AcccountNumber: number;public branchCode:number;
请不要低估我的幽默感:-)
答案 2 :(得分:6)
这个怎么样?将array deconstruction与Typescript的array type一起使用。
let [x,y]: number[]
但是请注意,如果不打开pedantic index signature check,此功能将不安全。 例如,以下代码即使应该也不会出现编译错误:
let [x, y]: number[] = [1]
console.log(x.toString()) // No problem
console.log(y.toString()) // No compile error, but boom during runtime
答案 3 :(得分:4)
即使您执行以下操作,也只需添加:
{{1}}
它仍然不起作用。在这种情况下,notes被声明为type any,signatureTypeName被声明为string类型。您可以通过将鼠标悬停在变量上来验证所有这些,例如在Visual Studio Code中。然后在弹出窗口中显示声明的类型。
答案 4 :(得分:0)
例如让isFormSaved,isFormSubmitted加载:boolean = false; 该语法仅在功能块中有效,而在typescript导出类文件中则无效。不知道为什么。
例如:
export class SyntaxTest {
public method1() {
e.g. let isFormSaved, isFormSubmitted, loading: boolean = false;
}
}
答案 5 :(得分:0)
let [string1, string2]: string[] = [];
分解:
[string1, string2]
被声明为string[]
,这意味着string1, string2
的类型为string
[]
[undefined, undefined, undefined, ...]
将解构string1
和string2
分配给undefined
时string1, string2
的类型为string
,值undefined
答案 6 :(得分:0)
您必须在每个变量上指定类型:
let x: number, y: number
答案 7 :(得分:0)
这是我使用的另一种选择。
export type CoordinatesHome = {
lat?: number;
long?: number;
};
export type CoordinatesAway = CoordinatesHome;
答案 8 :(得分:-1)
如果您可以接受孤儿变量。 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时生成的Javascript代码。
var numberArray; //orphan variable
var [n1, n2, n3, n4] = numberArray;
n1 = 123; //n1 is number
在定位ECMAScript 5时生成的JS代码,就像Louis在下面说的那样,它并不漂亮。
var numberArray; //orphan variable
var n1 = numberArray[0], n2 = numberArray[1], n3 = numberArray[2], n4 = numberArray[3];
n1 = 123; //n1 is number
答案 9 :(得分:-1)
不推荐,但是:
interface Name {[name:string]: T } or type Name{[name:string]: T}
示例:type test = {[Name: string]:string}
示例:interface {[Name: string]:boolean}
这有效。 Typescript文档中提供了另一个用例示例。 Typescript Handbook
答案 10 :(得分:-3)
可以在两侧使用数组解构为多像素分配值
[startBtn, completeBtn, againBtn] = [false, false, false];
答案 11 :(得分:-4)
让我们注意:string ='',signatureTypeName ='';