嵌套箭头函数打字稿语法
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);
}
};
我收到此错误“shorthand 属性 'param' 的范围内不存在任何值。要么声明一个值,要么提供一个初始化程序。”
如果你想解构param
属性,你必须把解构后的对象语法放在参数类型定义的左边,像这样:
export const asyncAction = ({
param,
}: {
param: string;
}): AppThunk => async (dispatch) => {
// ...
但是在这种情况下,如果一个参数确实是一个只有 param
属性 的对象,那么解构就没有用了,因为你稍后会创建一个带有 param
属性 传递给 api
:
export const asyncAction = (data: { param: string; }): AppThunk => async (dispatch) => {
try {
const apidata = await api(data);
} catch (err) {
console.log(err);
}
// ...
};
您的 outerscope 方法有一个名为 data 的参数,参数为 属性。在您的内部范围方法中,您试图在没有 data.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 });
中,您正在尝试访问存储在 data
中的 param
。你需要先从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);
}
};
export const asyncAction = (data: {
param: string
}): AppThunk => async (dispatch) => {
try {
const apidata = await api({ param });
} catch (err) {
console.log(err);
}
};
我收到此错误“shorthand 属性 'param' 的范围内不存在任何值。要么声明一个值,要么提供一个初始化程序。”
如果你想解构param
属性,你必须把解构后的对象语法放在参数类型定义的左边,像这样:
export const asyncAction = ({
param,
}: {
param: string;
}): AppThunk => async (dispatch) => {
// ...
但是在这种情况下,如果一个参数确实是一个只有 param
属性 的对象,那么解构就没有用了,因为你稍后会创建一个带有 param
属性 传递给 api
:
export const asyncAction = (data: { param: string; }): AppThunk => async (dispatch) => {
try {
const apidata = await api(data);
} catch (err) {
console.log(err);
}
// ...
};
您的 outerscope 方法有一个名为 data 的参数,参数为 属性。在您的内部范围方法中,您试图在没有 data.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 });
中,您正在尝试访问存储在 data
中的 param
。你需要先从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);
}
};