TypeScript 类型错误逐层解析
Type error: Type 'typeof import("...route")' does not satisfy the constraint
'RouteHandlerConfig<"/api/content/[...path]">'.
"类型错误:route 文件导出的类型,不满足
RouteHandlerConfig<T>这个约束。"
typeof import(...)= 你写的这个文件整体导出的类型does not satisfy the constraint= 不符合……要求RouteHandlerConfig= Next.js 内部定义的「一个合法路由处理文件应该长什么样」的类型规范白话:你整个文件写法不对,Next.js 说"这不是我要的格式"。
Types of property 'GET' are incompatible.
"GET 这个属性的类型不兼容。"
缩进加深,开始定位具体是哪里不对。从"整个文件"缩小到"文件里的 GET 函数"。
Type '(_req: Request, { params }: { params: { path?: string[] | undefined; }; }) => Promise<Response>'
is not assignable to type
'(request: NextRequest, context: { params: Promise<{ path: string[]; }>; }) => void | Response | Promise<void |
Response>'.
"你写的 GET 函数的类型,无法赋值给 Next.js 期望的 GET 函数类型。"
左边(你写的):
- 第二个参数是
{ params: { path?: string[] } }← 普通对象,同步取值- 返回值是
Promise<Response>右边(框架期望的):
- 第二个参数是
{ params: Promise<{ path: string[] }> }← params 是 Promise!- 返回值是
void | Response | Promise<void | Response>核心差距已经出现了:params 一个是普通对象,一个是 Promise。
Types of parameters '__1' and 'context' are incompatible.
"两个函数的第二个参数类型不兼容。"
__1= TypeScript 给你的匿名解构参数起的内部名字(因为你写的是{ params }解构,没有参数名)context= Next.js 期望的第二个参数名继续缩小范围:从"整个函数"→ "函数的第二个参数"。
Type '{ params: Promise<{ path: string[]; }>; }' is not assignable to type '{ params: { path?: string[] | undefined;
}; }'.
"框架传进来的 context 对象(params 是 Promise),无法赋值给你声明的参数类型(params 是普通对象)。"
注意方向:是框架往你的函数里传参数,所以框架的类型是"实际值",你声明的类型是"接收槽"。框架传来的是
Promise<T>,但你的接收槽只认普通对象,类型不匹配,拒绝赋值。
Types of property 'params' are incompatible.
Type 'Promise<{ path: string[]; }>' has no properties in common with type '{ path?: string[] | undefined; }'.
"两边 params 字段的类型完全不兼容:
Promise<...>和普通对象{ path?: string[] }之间没有任何共同属性。"
has no properties in common是 TypeScript 在说:这两个类型之间的差距不是"少了某个字段",而是根本就是两种东西——一个是 Promise 对象(有.then、.catch、.finally),一个是你自定义的数据对象(有.path),互相没有交集。这是最深一层缩进,即根本原因:
整体错误逻辑图
文件整体不符合规范
└─ GET 函数类型不对
└─ 第二个参数类型不对
└─ context.params 类型不对
└─ 根因:params 应该是 Promise,你写成了普通对象
TypeScript 的类型错误永远是从外到内逐层缩进描述的,最深那行才是真正要改的地方,上面的层级只是在告诉你"怎么一路走到这个问题的"。
今天吃到了六块八一斤的,很脆又超多水分的苹果,口味酸甜酸甜的,好久没吃过这么好吃苹果了,就是吃完后还回味无穷的哪种感觉
今晚还买了21.8一斤的金枕榴莲,最后95.9(和老板砍下95块,老板不赏脸)全款拿下
今晚还做了龟苓膏(粉水比例1:24)、第一次买了活珠子(还没有试)、明天还想试着打玉米汁喝、搞个竹笋焖饭吃
这两天舌头和左内腮都长了口腔溃疡,舌头上的那种针扎的痛啊,真是难顶,主要是位置太要命了,只要一吃东西,每一口咀嚼都会触碰到最疼痛的位置,真是吃个饭都会被痛到流眼泪那种感觉