带有打字稿的 nextjs API,将 NextApiRequest 查询参数限制为字符串类型

use*_*932 8 typescript next.js

在此端点处理程序中,有没有一种方法可以将req.queryNextJS限制NextApiRequest为仅string类型而不是string | string[]. 例如,someQueryParam这里是string | string[]类型,但我想将其用作string类型

export default async function handler(
  req: NextApiRequest,
  res: NextApiResponse<Response>
) {

   const { someQueryParam } = req.query;
   
   // pass in someQueryParam as a string into a function call
   const result = functionCall(someQueryParam)
}
Run Code Online (Sandbox Code Playgroud)

string将 someQueryParam 传递到仅接受参数类型的函数时出现打字稿错误:

Argument of type 'string | string[]' is not assignable to parameter of type 'string'.
  Type 'string[]' is not assignable to type 'string'.
Run Code Online (Sandbox Code Playgroud)

NextApiRequest作为参考,这里是Nextjs 库中的定义

nextjs NextApiRequest

在将其传递给函数之前,也欢迎任何建议以某​​种方式用作someQueryParam类型string而不是在处理程序中类型string | string[]

Kc *_*son 5

最重要的问题是网址协议允许分配多个具有相同名称的查询名称。string[]然后它们作为 a而不是单个字符串传递。

例如,?value=one&value=two。因此,如果仅使用一个字符串,则应由应用程序决定接受哪个值。

const value = Array.isArray(params.value) ? params.value[0] : params.value