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];
So:
a = ["str1", true, 4]; // fine
b = [true, 3, "str"]; // fine
But:
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.