Skip to content

TypeScript

Next.js 提供了以 TypeScript 为首选的开发体验,用于构建您的 React 应用程序。

它内置了 TypeScript 支持,可以自动安装必要的包并配置适当的设置。

新项目

create-next-app 默认带有 TypeScript。

bash
npx create-next-app@latest

现有项目

通过将文件重命名为 .ts / .tsx 将 TypeScript 添加到您的项目中。运行 next devnext build 以自动安装必要的依赖项,并添加一个带有推荐配置选项的 tsconfig.json 文件。

如果您已经有 jsconfig.json 文件,请将旧的 jsconfig.json 中的 paths 编译器选项复制到新的 tsconfig.json 文件中,并删除旧的 jsconfig.json 文件。

最低 TypeScript 版本

强烈建议至少使用 TypeScript v4.5.2 版本,以获得诸如 import 名称上的类型修饰符性能改进 等语法特性。

路径别名和baseUrl

Next.js自动支持tsconfig.json中的"paths""baseUrl"选项。

类型检查next.config.js

next.config.js文件必须是一个JavaScript文件,因为它不会被Babel或TypeScript解析,但您可以在IDE中使用JSDoc添加一些类型检查,如下所示:

js
// @ts-check

/**
 * @type {import('next').NextConfig}
 **/
const nextConfig = {
  /* 配置选项在这里 */
}

module.exports = nextConfig

增量类型检查

v10.2.1起,Next.js在您的tsconfig.json中启用时支持增量类型检查,这可以帮助加快大型应用程序中的类型检查速度。

忽略 TypeScript 错误

当项目中存在 TypeScript 错误时,Next.js 会使您的 生产构建 (next build) 失败。

如果您希望即使应用程序存在错误,Next.js 也能危险地生成生产代码,您可以禁用内置的类型检查步骤。

如果禁用了,请确保您在构建或部署过程中运行类型检查,否则这可能非常危险。

打开 next.config.js 并启用 typescript 配置中的 ignoreBuildErrors 选项:

js
module.exports = {
  typescript: {
    // !! 警告 !!
    // 危险地允许即使项目有类型错误,生产构建也能成功完成。
    // !! 警告 !!
    ignoreBuildErrors: true,
  },
}

自定义类型声明

当您需要声明自定义类型时,可能会想要修改 next-env.d.ts。然而,此文件是自动生成的,因此您所做的任何更改都将被覆盖。相反,您应该创建一个新文件,我们称之为 new-types.d.ts,并在您的 tsconfig.json 中引用它:

json
{
  "compilerOptions": {
    "skipLibCheck": true
    //...已省略...
  },
  "include": [
    "new-types.d.ts",
    "next-env.d.ts",
    ".next/types/**/*.ts",
    "**/*.ts",
    "**/*.tsx"
  ],
  "exclude": ["node_modules"]
}

版本变更

版本变更
v13.2.0静态类型链接在 beta 版本中可用。
v12.0.0SWC 现在默认用于编译 TypeScript 和 TSX,以实现更快的构建。
v10.2.1当在您的 tsconfig.json 中启用时,添加了 增量类型检查 支持。