You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js如何使用TypeScript为Error错误页添加类型定义

Next.js 自定义错误页 TypeScript 类型定义方案

原有代码问题修正

你原有代码存在两处类型定义错误:

  • InitialProps中err字段类型标注错误,err不是NextApiResponse类型,是扩展了statusCode属性的原生Error实例
  • 无需手动定义getInitialProps入参类型,Next.js已提供内置的NextPageContext通用类型

以下是Pages Router模式下的完整正确实现:

import type { NextPage, NextPageContext } from 'next'

// 组件入参类型定义
interface ErrorProps {
  statusCode: number
}

const Error: NextPage<ErrorProps> = ({ statusCode }) => {
  return (
    <p>
      {statusCode
        ? `服务器端发生错误,错误码:${statusCode}`
        : "客户端发生错误"}
    </p>
  )
}

Error.getInitialProps = ({ res, err }: NextPageContext) => {
  // 新增空值合并运算符避免类型不安全问题
  const statusCode = res ? res.statusCode : err ? err.statusCode ?? 404 : 404
  return { statusCode }
}

export default Error

Next.js 13+ App Router 错误页类型定义

如果使用App Router模式,错误页error.tsx有单独的内置类型可以直接使用:

'use client' // App Router错误页强制要求为客户端组件

import type { ErrorProps } from 'next/error'

export default function Error({ error, reset }: ErrorProps) {
  return (
    <div>
      <h2>发生异常错误</h2>
      <button onClick={() => reset()}>点击重试</button>
    </div>
  )
}

内容的提问来源于stack exchange,提问作者user3887366

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:36:04