簡體   English   中英

嵌套箭頭函數打字稿語法

[英]Nested arrow function typescript syntax

export const asyncAction = (data: {
  param: string
}): AppThunk => async (dispatch) => {
  try {
    const apidata = await api({ param });
  } catch (err) {
    console.log(err);
  }
};

我收到此錯誤“在速記屬性 'param' 的范圍內不存在任何值。聲明一個或提供一個初始值設定項。”

如果要解構param屬性,則必須將解構的對象語法放在參數類型定義的左側,如下所示:

export const asyncAction = ({
  param,
}: {
  param: string;
}): AppThunk => async (dispatch) => {
  // ...

但在這種情況下,如果 one 參數確實是一個只有一個param屬性的對象,解構沒有幫助,因為您稍后將創建一個帶有param屬性的對象以傳遞給api

export const asyncAction = (data: { param: string; }): AppThunk => async (dispatch) => {
  try {
    const apidata = await api(data);
  } catch (err) {
    console.log(err);
  }
  // ...
};

您的外部作用域方法有一個名為 data 且具有 param 屬性的參數。 在您的內部作用域方法中,您試圖在沒有 data.param 的情況下訪問 param

如果應該是:

export const asyncAction = (data: {
    param: string
}): AppThunk => async (dispatch) => {
    try {
        const apidata = await api({ param: data.param });
    } catch (err) {
        console.log(err);
    }
};

api({ param }); 您嘗試訪問param中所儲存data 你需要先從data “解壓”它,像這樣: const param = data.param; ,只有這樣你才能使用它。

export const asyncAction = (data: {
  param: string
}): AppThunk => async (dispatch) => {
  const param = data.param;
  try {
    const apidata = await api({ param });
  } catch (err) {
    console.log(err);
  }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM