为什么使用Promise类型时会出现错误。异步功能。 呃 函数缺少结尾的return语句,并且返回类型不包含'undefined'。
import { faceProductList } from "../../Type/Interface";
class Server {
private url: string = "https://...../";
public async request(id: string): Promise<object | string> {
try {
const res = await fetch(`${this.url}${id}`);
if (!res.ok) {
throw Error("Page Not Found 404");
}
const resArr: object = await res.json();
return resArr;
} catch (error) {
return error.message;
}
}
public async handler(
pathname: string,
valueSearch: string
): Promise<faceProductList[] | string> {
try {
const prodObj = await this.request(pathname);
if (typeof prodObj === "string") {
throw Error(prodObj);
} else if (valueSearch) {
return Object.values(prodObj)
.flat()
.filter(({ title }) => title.includes(valueSearch));
}
} catch (error) {
return error;
}
}
}
答案 0 :(得分:1)
如果prodObj
不是string
类型,并且valueSearch
是虚假的(例如,空字符串)-函数隐式返回undefined
。在这种情况下,您应该决定要做什么(返回)。
if (typeof prodObj === "string") {
throw Error(prodObj);
} else if (valueSearch) {
return Object.values(prodObj)
.flat()
.filter(({ title }) => title.includes(valueSearch));
}
// undefined returned here implicitly
没有return语句的函数将返回默认值。对于使用
new
关键字调用的构造函数,默认值为其this
参数的值。对于所有其他功能,默认返回值为undefined
。