No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Aprende Inglés, Programación, AI, Ciberseguridad y más a precio especial.

Antes: $249

Currency
$209
Suscríbete

Termina en:

2 Días
3 Hrs
51 Min
34 Seg

Listas y non-null types

8/24
Recursos

Aportes 2

Preguntas 0

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

Nulabilidad y listas

En GraphQL, no define un nuevo tipo cuando intenta devolver una lista de elementos de un campo; simplemente aplica un modificador de lista a ese tipo, así:

type ObjectType {
  singleRestaurant: Restaurant
  multipleRestaurants: [Restaurant]
}

Non-null también es un modificador, y resulta que puede aplicar modificadores de listas y no nulos de forma anidada arbitrariamente, especialmente porque las listas se pueden anidar:

type ObjectType {
  first: Restaurant
  second: [Restaurant]
  third: [Restaurant!]
  fourth: [Restaurant!]!
  fifth: [[Restaurant!]]!
}

Entonces, ¬Ņqu√© significa tener el no nulo dentro o fuera de una lista? Bueno, decide si el no nulo se aplica al elemento de la lista frente a la lista en s√≠.

Por ejemplo, puede tener una lista de cadenas no nulas:

drinkSizes: [String!]

Esto significa que la lista en s√≠ puede ser nula, pero no puede tener ning√ļn miembro nulo. Por ejemplo, en JSON:

drinkSizes: nulo // v√°lido
drinkSizes: [] // v√°lido
drinkSizes: ["peque√Īo", "grande"] // v√°lido
drinkSizes: ["peque√Īo", nulo, "grande"] // error

Ahora, digamos que definimos una lista de cadenas no nulas:

drinkSizes: [String]!

Esto significa que la lista en sí no puede ser nula, pero puede contener valores nulos:

drinkSizes: nulo // error
drinkSizes: [] // v√°lido
drinkSizes: ["peque√Īo", "grande"] // v√°lido
drinkSizes: ["peque√Īo", nulo, "grande"] // v√°lido

Finalmente, podemos combinar los dos:

drinkSizes: [String!]!

Este es el m√°s restrictivo:

drinkSizes: nulo // error
drinkSizes: [] // v√°lido
drinkSizes: ["peque√Īo", "grande"] // v√°lido
drinkSizes: ["peque√Īo", nulo, "grande"] // error

Una conclusión interesante aquí es que no hay forma de especificar que la lista no puede estar vacía: una lista vacía [ ] siempre es válida, independientemente de si la lista o los elementos no son nulos.

[Int]!

[1,2,3] // ok
[] // ok 
null // N/A 
[1,2,null] // ok

[Int!]

[1,2,3] // ok
[] // ok 
null // ok 
[1,2,null] // N/A

[Int!]!

[1,2,3] // ok
[] // ok 
null // N/A 
[1,2,null] // N/A