2015-12-11 21 views
21

Tôi đang mã hóa một lớp TypeScript lớn và tôi đã đặt noImplicitAny thành true. Có cách nào để khai báo nhiều biến cùng loại trên cùng một dòng không?Khai báo nhiều biến TypeScript với cùng một loại

Tôi muốn khai báo x và y là các số có thứ gì đó như "x, y: number". Nhưng trình biên dịch không thích điều đó hay bất cứ điều gì khác mà tôi đã thử. Có cách nào thay thế tốt hơn cho "x: số; y: số" không?

Trả lời

21

Không có bất kỳ cú pháp nào có thể thực hiện điều này một cách tốt hơn chỉ cần viết loại hai lần.

+12

Cảm ơn bạn. Thật là sự xấu hổ. Đối với các thành phần web có nhiều biến, việc khai báo từng thành phần trên một dòng riêng biệt là một cơn đau. Điều này đặc biệt đúng đối với các thành phần dựa trên biểu mẫu. – user934904

-2

để ghi chú: string = '', signatureTypeName = '';

+0

Điều này không xác định rõ ràng 'signatureTypeName' là một chuỗi'; nó hoàn toàn là một 'chuỗi' bởi vì đó là loại giá trị đầu tiên được gán cho nó. Ban đầu bạn có thể gán bất cứ thứ gì cho 'signatureTypeName' và nó sẽ biên dịch. Ví dụ, bạn có thể đã thực hiện 'let a: string =" ", b = 4', đánh bại câu hỏi của OP, trong đó anh ta/cô ấy nói rằng họ muốn cả hai biến là cùng loại. – mgthomas99

0

Nếu bạn có thể chấp nhận biến mồ côi. Array destructuring có thể thực hiện việc này.

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

Cập nhật: Đây là đoạn mã Javascript được tạo ra, khi nhắm mục tiêu ECMAScript 6.

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

JS Mã được tạo ra khi nhắm mục tiêu ECMAScript 5, như Louis cho biết dưới đây, nó không đẹp.

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

Bạn có thể loại bỏ biến mồ côi bằng cách thực hiện 'var [n1, n2, n3, n4] = [] dưới dạng số [];' nhưng tôi vẫn không phải là người hâm mộ của phương pháp này bởi vì cho dù với mã của bạn, hoặc với sự sửa đổi của tôi 'tsc' tạo ra 4 nhiệm vụ vô dụng cho dòng' var [n1, n2, n3, n4] = ... '. – Louis

1

Chỉ cần nói thêm rằng ngay cả khi bạn làm như sau:

let notes, signatureTypeName: string; 

nó vẫn không hoạt động. Trong trường hợp này, các ghi chú được khai báo là kiểu bất kỳ và signatureTypeName làm kiểu chuỗi. Bạn có thể xác minh tất cả điều này bằng cách di chuột qua biến, ví dụ trong Visual Studio Code. Loại được khai báo sẽ xuất hiện sau đó trong cửa sổ bật lên.

Các vấn đề liên quan