我在 Next.js 中使用 API 路由。在“api”檔案夾中,我的“file.tsx”包含以下內容:
import type { NextApiRequest, NextApiResponse } from "next";
const someFunction = (req: NextApiRequest, res: NextApiResponse<data>) => { the rest of the code... }
一切正常。但是,關于以下行:
res.status(200).send();
send()突出顯示,我收到以下 TypeScript 錯誤:
預期 1 個引數,但得到 0.ts(2554) utils.d.ts(182, 25):未提供“body”的引數。
按照檔案(https://nextjs.org/docs/api-routes/response-helpers),我嘗試添加一個引數,例如res.status(200).send({key: "value"}),res.status(200).send("string")或兩者都用json()而不是send()。
我什至從檔案中復制了確切的示例,但這個錯誤仍然存??在。唯一清除錯誤(作為測驗)的是更改輸入 - 但自然這是不可取的,因為錯誤可能是有原因的。
我在這里錯過了什么嗎?
uj5u.com熱心網友回復:
這里發生了幾件事。對于第一個錯誤,Typescript 抱怨沒有提供“body”的引數。如您所知,此錯誤非常簡單。另一個錯誤來自已經為您定義的回應型別:
res: NextApiResponse<Data>
其中Data型別定義為:
type Data = {
name: string;
};
這是一個具有 name 型別的屬性的物件string。
因此,如果您想發送純字串,則需要將型別修改為:
type Data = string;
您也可以直接在回應中定義它,如下所示:
const someFunction = (req: NextApiRequest, res: NextApiResponse<string>) => {
return res.status(200).json("hello");
};
export default someFunction
在任何情況下,您都需要記住,Typescript 要求您明確說明您作為回應發送的資料型別。在專案中使用 Typescript 的全部目的是通過向代碼添加型別安全檢查來防止錯誤。
請參閱日常型別以了解更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/479151.html
