声明具有相同类型的多个 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, ...] 当解构 string1string2 被分配给 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;