声明具有相同类型的多个 TypeScript 变量
Declaring multiple TypeScript variables with the same type
我正在编写大型 TypeScript class,并且我已将 noImplicitAny
设置为 true
。有没有办法在同一行声明多个相同类型的变量?
我想将 x 和 y 声明为类似于“x, y: number”的数字。但是编译器不喜欢那个或我尝试过的任何其他东西。除了“x: number; y: number”还有更好的选择吗?
没有任何语法能比只写两次类型更好地实现这一点。
让注释:string = '', signatureTypeName = '';
如果你可以接受一个孤儿变量。 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
没有真正的方法可以实现你想要的。如果您的唯一目标是将所有内容压缩到一行,您可以执行以下操作:
public AcccountNumber: number;public branchCode:number;
…但我不推荐它。
例如让 isFormSaved, isFormSubmitted, loading: boolean = false;
此语法仅在功能块中有效,但在打字稿导出 class 文件中无效。不知道为什么。
例如:
export class SyntaxTest {
public method1() {
e.g. let isFormSaved, isFormSubmitted, loading: boolean = false;
}
}
两边都可以使用数组解构来给多个赋值
[startBtn, completeBtn, againBtn] = [false, false, false];
这个怎么样?使用 array deconstruction with Typescript's 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
let [string1, string2]: string[] = [];
分解:
- 左边整个
[string1, string2]
被声明为string[]
,暗示string1, string2
是类型string
- 要进行解构,您需要将其分配给某些东西,这里是空数组
[]
- 右边的空数组是
[undefined, undefined, undefined, ...]
当解构 string1
和 string2
被分配给 undefined
- 最后
string1, string2
属于 string
类型,值为 undefined
您必须指定每个变量的类型:
let x: number, y: number
不推荐,但是:
interface Name {[name:string]: T } or type Name{[name:string]: T}
示例:type test = {[Name: string]:string}
示例:interface {[Name: string]:boolean}
这行得通。 Typescript 文档中提供了另一个用例的示例。
Typescript Handbook
这是我使用的另一种选择。
export type CoordinatesHome = {
lat?: number;
long?: number;
};
export type CoordinatesAway = CoordinatesHome;
我正在编写大型 TypeScript class,并且我已将 noImplicitAny
设置为 true
。有没有办法在同一行声明多个相同类型的变量?
我想将 x 和 y 声明为类似于“x, y: number”的数字。但是编译器不喜欢那个或我尝试过的任何其他东西。除了“x: number; y: number”还有更好的选择吗?
没有任何语法能比只写两次类型更好地实现这一点。
让注释:string = '', signatureTypeName = '';
如果你可以接受一个孤儿变量。 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
没有真正的方法可以实现你想要的。如果您的唯一目标是将所有内容压缩到一行,您可以执行以下操作:
public AcccountNumber: number;public branchCode:number;
…但我不推荐它。
例如让 isFormSaved, isFormSubmitted, loading: boolean = false; 此语法仅在功能块中有效,但在打字稿导出 class 文件中无效。不知道为什么。
例如:
export class SyntaxTest {
public method1() {
e.g. let isFormSaved, isFormSubmitted, loading: boolean = false;
}
}
两边都可以使用数组解构来给多个赋值
[startBtn, completeBtn, againBtn] = [false, false, false];
这个怎么样?使用 array deconstruction with Typescript's 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
let [string1, string2]: string[] = [];
分解:
- 左边整个
[string1, string2]
被声明为string[]
,暗示string1, string2
是类型string
- 要进行解构,您需要将其分配给某些东西,这里是空数组
[]
- 右边的空数组是
[undefined, undefined, undefined, ...]
当解构string1
和string2
被分配给undefined
- 最后
string1, string2
属于string
类型,值为undefined
您必须指定每个变量的类型:
let x: number, y: number
不推荐,但是:
interface Name {[name:string]: T } or type Name{[name:string]: T}
示例:type test = {[Name: string]:string}
示例:interface {[Name: string]:boolean}
这行得通。 Typescript 文档中提供了另一个用例的示例。 Typescript Handbook
这是我使用的另一种选择。
export type CoordinatesHome = {
lat?: number;
long?: number;
};
export type CoordinatesAway = CoordinatesHome;