Gie Spaepen Gie Spaepen - 1 year ago 122
TypeScript Question

Difference between string[] and [string]

Consider the following Typescript example. The first line results in an error 'type undefined[] is not assignable to type [string]'. The last two lines do compile.

let givesAnError: [string] = [];
let isOK: string[] = [];
let isAlsoOK: [string] = ["foo"];

How do you have to interprete the type definition
in Typescript?

Answer Source

The first (givesAnError) and last (isAlsoOK) are tuples, and the second (isOK) is an array.

With arrays all of your elements are of the same type:

let a: string[];
let b: boolean[];
let c: any[];

But with tuples you can have different types (and a fixed length):

let a: [string, boolean, number];
let b: [any, any, string];


a = ["str1", true, 4]; // fine
b = [true, 3, "str"]; // fine


a = [4, true, 3]; // not fine as the first element is not a string
b = [true, 3]; // not fine because b has only two elements instead of 3

It's important to understand the the javascript output will always use arrays, as there's no such thing as tuple in js.
But for the compilation time it is useful.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download