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.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?