Firkantede parenteser rundt vs etter uttrykk i Typescript


er det en forskjell mellom de følgende to notasjonene med firkantede parenteser i Typescript? Prøvde et par scenarier, og det ser ut til at de er like?

Takk!

interface test {
  a: string;
  b: string;
}

const x: test[] = [{a: "aaaa", b: "bbbb"}]

const y: [test] = [{a: "aaaa", b: "bbbb"}]

Svar #1

Som @VLAZ påpeker, er x et Array, mens y er en Tuple.

Forskjellen er synlig selv i dette enkle tilfellet.

interface test {
  a: string;
  b: string;
}

const x: test[] = [{a: "aaaa", b: "bbbb"}]
const y: [test] = [{a: "aaaa", b: "bbbb"}]

x.push({a: "a1", b: "b1"});  // works fine
y.push({a: "a1", b: "b1"});  // works fine

const a = x[1]; // works fine 
const b = y[1]; // compilation error 
                // Tuple type '[test]' of length '1' has no element at index '1'.

Relaterte artikler