Я создаю пользовательские скалярные типы, которые переопределяют встроенные Int
и Float
. Я хотел бы знать, определяет ли схема значение как обнуляемое или нет. Я хотел бы разрешить Int
иначе, чем Int!
в моем пользовательском скалярном типе
То, что я хочу сделать, - это узнать в преобразователе пользовательского скалярного типа, определено ли значение как Nullable или нет в схеме, чтобы я мог разрешить их по-другому и выдать пользовательскую ошибку.
const resolvers = {
// ...
Int: new GraphQL.GraphQLScalarType ({
name: 'Int',
description: 'Custom Int type',
serialize (val, isNullable) {
},
parseValue (val, isNullable) {
// assume this parses the value
const value = transit.read (val);
// this does some type checking (using a library called sanctuary)
if (S.is ($.Integer) (value)) {
// if Nullable we want to return a maybe type
if (isNullable) return S.Just (value);
return value;
}
return isNullable ? S.Nothing : new Error ();
},
parseLiteral (ast) {
},
}),
}
Результат для Int
(Nullable) будет иметь тип Maybe Integer
, а результат Int!
(Non-Nullable) будет иметь тип Integer