Я использую мутацию 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
с data.loginEmail.accessToken
:
var data: SignInReponse | null | undefined
Object is possibly 'null' or 'undefined'.ts(2533)