В некоторых языках вы можете переименовать базовый тип, такой как string, во что-то другое:
type alias UUID = String
Это все еще строковый тип, но теперь вы можете лучше рассуждать о коде. Потому что не все строки во вселенной .. это просто UUID форма строк. И вы можете обнаружить ошибку быстрее.
Я пытался сделать то же самое в graphql, но она не работает:
function UUID (){
return new GraphQLScalarType({
name: 'UUID',
serialize: uidAsString => { return uidAsString },
parseValue: uidAsString => { return uidAsString },
parseLiteral(ast) {
console.log(ast) // log below
if (ast.kind === Kind.GraphQLString) {
return ast.value;
}
return null;
}
});
}
Ошибка:
{
"errors": [
{
"message": "Expected type UUID!, found \"what?\"; Kind is not defined",
"locations": [
{
"line": 2,
"column": 30
}
]
}
]
}
Когда console.log ast
я вижу это:
{
kind: 'StringValue',
value: 'what?',
block: false,
loc: { start: 41, end: 48 }
}
Так какой код должен быть у меня здесь? Я не до конца понимаю, что я должен вернуть ... и, очевидно, ast.value
не правильно.
Возможно ли даже создать псевдонимы для базовых типов, таких как string
, int
, другие enums
и т. Д. ? Объекты уже должным образом (в частности) названы - мне не нужно переименовывать их слишком часто.