J'ai un tas de code dans ma base de code dactylographiée comme celui-ci ...

export interface SomeType {
    name: string;
}

export interface SomeComposedType {
    things: [SomeType];
}

Cela fonctionne bien, mais j'ai commencé à rencontrer des problèmes avec

La propriété «0» est manquante dans le type

Et

L'argument de type 'SomeType []' ne peut pas être affecté au paramètre de type '[SomeType]'

Je suis vraiment confus à ce sujet maintenant. Je suis sûr que

let x:SomeType[] = []

Est équivalent à

let x: Array<SomeType> = []

Mais est

let x:[SomeType] = []

Également équivalent et correct?

0
Michael Dausmann 28 août 2020 à 03:13

2 réponses

Meilleure réponse

Non. [SomeType] représente un type de tuple, c'est-à-dire un tableau avec exactement un élément de SomeType

[string, number], par exemple, correspondrait à un tableau comme ["test", 0]

6
Rubydesic 28 août 2020 à 00:19

Non, let x: [SomeType] signifie que x est un tableau de 1 élément et que cet élément est de type SomeType

Si vous devez déclarer un tableau contenant des éléments de SomeType, utilisez simplement l'une des 2 formes que vous avez mentionnées, SomeType[] ou Array<SomeType>

2
Ali Hassan 28 août 2020 à 00:18