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.
