Tôi có một mảng của mẫu : [ 1, "message" ].
Làm thế nào tôi có thể định nghĩa điều này trong TypeScript?
Tôi có một mảng của mẫu : [ 1, "message" ].
Làm thế nào tôi có thể định nghĩa điều này trong TypeScript?
Câu trả lời:
Xác định mảng với nhiều loại trong TypeScript
Sử dụng (string|number)[]bản demo loại liên minh :
const foo: (string|number)[] = [ 1, "message" ];
Tôi có một mảng có dạng: [1, "message"].
Nếu bạn chắc chắn rằng luôn có hai phần tử [number, string]thì bạn có thể khai báo nó dưới dạng một tuple:
const foo: [number, string] = [ 1, "message" ];
Nếu bạn đang coi nó là một tuple (xem phần 3.3.3 của thông số ngôn ngữ ), thì:
var t:[number, string] = [1, "message"]
hoặc là
interface NumberStringTuple extends Array<string|number>{0:number; 1:string}
var t:NumberStringTuple = [1, "message"];
type NumberStringTuple = [number, string]
const W3COLORS: [[string, string, number, number]] = [ ["aliceblue", "#f0f8ff", 240, 248, 255], ... ];
TS lint của tôi đã phàn nàn về các giải pháp khác, vì vậy giải pháp phù hợp với tôi là:
item: Array<Type1 | Type2>
nếu chỉ có một loại, bạn có thể sử dụng:
item: Type1[]
Tôi đã giải quyết định dạng sau để nhập các mảng có thể có các mục thuộc nhiều loại.
Array<ItemType1 | ItemType2 | ItemType3>
Điều này hoạt động tốt với thử nghiệm và loại bảo vệ. https://www.typescriptlang.org/docs/handbook/advified-types.html#type-guards-and-differentiating-types
Định dạng này không hoạt động tốt với thử nghiệm hoặc loại bảo vệ:
(ItemType1 | ItemType2 | ItemType3)[]