Er :[Interface] en gyldig array-definisjon i Typescript?


Jeg har en haug med kode i TypeScript-kodebasen min som dette...

export interface SomeType {
    name: string;
}

export interface SomeComposedType {
    things: [SomeType];
}

Dette har fungert fint, men så begynte jeg å støte på problemer med

Egendommen '0' mangler i typen

og

Argument av typen 'SomeType[]' kan ikke tildeles parameter av typen '[SomeType]'

Jeg er virkelig forvirret over dette nå. Jeg er ganske sikker på at

let x:SomeType[] = []

er lik

let x: Array<SomeType> = []

men er

let x:[SomeType] = []

også ekvivalent og korrekt?

Svar #1

Nei. [SomeType] representerer en tuple-type, altså et array med nøyaktig ett element av SomeType

[string, number], for eksempel, ville matche et array som ["test", 0]

Svar #2

nei, let x: [SomeType] betyr at x er et Array med 1 element og at det elementet er av typen SomeType

hvis du trenger å erklære et array som inneholder elementer av SomeType, bruk bare en av de 2 formene du nevnte, SomeType[] eller Array<SomeType>

Relaterte artikler