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.
Want to see more contributions, questions and answers from the community?