我正在使用typescript的apollo server,但是在我的解析器内部获取上下文参数时遇到了麻烦,因为
context
上的name
属性被识别为any
类型,而不是string
类型。我希望它的类型能够被定义为string
。同时,我也发现context
参数的类型为any
,而我想要它成为一个特定接口的类型。是否有办法告诉context
及其属性我想要的类型,而不是所有属性都被定义为any
?const server = new ApolloServer({
typeDefs: gql`
type Query {
test: String
}
`,
resolvers: {
Query: {
test(parent: any, args: any, context, info: any) {
context.name // name is typed as "any" when I'd like it to be typed as "string"
}
}
},
context() {
return {
name: 'John Doe'
}
}
})
我尝试做类似的事情,但是出现了错误。
context<{ name: string }>() {
return {
name: 'John Doe'
}
}
我通过明确告诉上下文需要什么来使其正常工作,但是这种方法似乎有点繁琐,因为我必须在每个解析器文件中手动导入Context
并进行强制转换。
interface Context {
name: string
}
const server = new ApolloServer({
...
resolvers: {
Query: {
test(parent: any, args: any, context: Context, info: any) {
context.name // name is typed as "string" here because I used "context: Context" explicitly
}
}
}
...
})