在某些语言中,您可以将字符串等基本类型重命名为其他类型:
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.logast
我看到这个:
{
kind: 'StringValue',
value: 'what?',
block: false,
loc: { start: 41, end: 48 }
}
那么我应该在这里有什么代码?我不完全理解我应该返回什么......显然ast.value
是不正确的。
甚至可以为基本类型创建别名,如string
, int
, otherenums
等?对象已经正确(特别)命名 - 我发现自己不需要经常重命名它们。