【发布时间】:2020-07-15 23:31:16
【问题描述】:
我正在运行这样的 graphql 突变:
interface SignInReponse {
loginEmail : {
accessToken: string;
}
}
const [login] = useMutation<SignInReponse>(LOGIN);
这是突变在模式中的样子:
loginEmail(
email: String!
password: String!
): SignInResponse!
type SignInResponse {
accessToken: String!
}
现在登录和一切正常,但我觉得interface SignInResponse 实际上并没有做任何事情。
例如,我尝试将我的 SignInResponse 替换为:
interface SignInReponse {
users: {
nodes: {
id: string;
firstHelloName:number;
lastName: string;
phoneNumber: string;
email: string;
}[]
}
}
显然不正确。但是登录仍然成功,并且没有显示错误。那有什么意义呢?
编辑: 所以这就是我使用突变的方式:
const [login] = useMutation<SignInReponse>(LOGIN);
let submitForm = (email: string, password: string) => {
setIsSubmitted(true);
login({
variables: {
email: email,
password: password,
},
})
.then(({ data }: ExecutionResult<SignInReponse>) => {
dispatch({ type: "login", payload: data.loginEmail.accessToken })
})
在ExecutionResult<SignInReponse> 之前,我只是使用any。但是,现在我已经更改了类型,它给了我一个来自data.loginEmail.accessToken 的data 错误:
var data: SignInReponse | null | undefined
Object is possibly 'null' or 'undefined'.ts(2533)
【问题讨论】:
标签: javascript reactjs typescript graphql apollo