首页 > 解决方案 > 我如何将传递给有效负载创建者的参数类型与来自 RTK 中有效负载创建者的返回类型混合在一起?

问题描述

让我的类型与createAsyncThunk. 我的createAsyncThunk样子如下。

export const signupUser = createAsyncThunk<
  ISignUpData,
  ISignUpProps,
  {
    rejectValue: IError;
  }
>('signup', async (data, { rejectWithValue }) => {
  try {
    const response = await Axios.anon.post(`/v1/auth/register`, data);

    if (response.status !== 201) {
      return rejectWithValue({ message: 'Something went wrong' });
    }
    
    const { accessToken, ...rest } = response.data
    TokenService.updateLocalAccessToken(accessToken.token);
    return rest;
  } catch (error) {
    if (error instanceof Error) {
      return rejectWithValue({ message: error.message });
    }
    return rejectWithValue({ message: 'Something went wrong' });
  }
});

我得到的错误是

Property 'accessToken' does not exist on type 'ISignUpProps'

ISignUpProps看起来像这样

export interface ISignUpProps {
  username: string;
  email: string;
  password: string;
}

ISignUpData看起来像这样

export interface ISignUpData {
  user: {
    id: string
    username: string,
    role: string,
    email: string,
    isEmailVerified: boolean,
  },
  accessToken: {
    token: string,
    expires: string
  }
}

据我了解,尖括号 ( ISignUpProps) 中的第二个参数应该是传入的数据的类型createAsyncThunk。那么为什么它说不accessToken存在于ISignUpProps,什么时候accessToken返回的有效载荷(ISignUpData)的一部分?

标签: typescriptredux-toolkit

解决方案


推荐阅读