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>