Vad är "namngivna eller märkta tupler" i Typescript?


När jag läste ändringarna i Typescript 4.0, hittade jag den nya funktionen:

Märkta tuple-element

Jag trodde att element antingen kunde indexeras med siffror (som i tupler och listor) eller med nycklar (som i dicts). Jag förväntade mig inte att de kunde indexeras på båda sätten.

min fråga är:

  • Varför/när ska jag använda namngivna tupler istället för vanliga tupler?

Svar #1

Detta är enbart för dokumentationsändamål, det har ingen semantik. De är bara ett sätt att sätta namn i typsignaturen--de typkontrolleras identiskt med tupler utan namn, och körningens beteende är också identiskt.

Även om dessa inte påverkar typkontroll, kan bristen på etiketter på tupelpositioner göra dem svårare att använda - svårare att kommunicera vår avsikt.

Betoning tillagd.

Använd dem när du vill dokumentera vad namnen på element i en tuppel är i typdefinitionen av en funktion som använder dem.

Exempel

Du kan ha en Range-typ, som är [start, slut]:

type Range = [start: number, end: number];

Eller så kan din Range-typ vara [start, längd]:

type Range = [start: number, length: number];

Eller så kan du använda onämnda tupler:

type Range = [number, number];

Dessa tre definitioner har identisk semantik vad gäller TypeScript. Du kan komma åt medlemmarna genom destrukturering med array-åtkomst (t.ex. arr[0]), precis som med vilken annan array som helst -- de är inte speciella. Du kan inte komma åt elementen med namn... återigen, detta är bara vanliga JavaScript-arrayobjekt.

Relaterade artiklar