tsconfig 中的路径无法导入类型

paths in tsconfig cannot import the type

我正在使用 TypeScript 开发服务器端项目。 我在 ooo.d.ts 中定义了一些类型。我在 tsconfig.json 中设置 paths。 但是当我尝试导入我定义的类型时,它显示错误,Module '"../../@types/express-custom-types"' has no exported member 'CustomError'.

项目结构如下。

├── src
│   └── routes
│       └── errorHandlers.ts
├── tsconfig.json
└── @types
    └── express-custom-types
        └── index.d.ts

我在 index.d.ts 中定义类型如下。

declare module "express-custom-types" {
  export type ErrorBody = { type: string; status: number; message: string };
}

并且我在 tsconfig.json

中定义了别名
"compilerOptions": {
    ...(omit)...

    "baseUrl": "./",
    "paths": {
      "*": ["*"],
      "@custom-types/*": ["@types/*"],
    },

然后像这样在 errorHandlers.ts 中导入类型。

import { ErrorBody } from "@custom-types/express-custom-types";

但是显示错误Module '"../../@types/express-custom-types"' has no exported member 'ErrorBody'.

我不知道该怎么办..

您要确保您声明的模块与您尝试导入的模块具有相同的全名。这应该有效:

declare module "@custom-types/express-custom-types" {
  export type ErrorBody = { type: string; status: number; message: string };
}

declare module ... 可用于添加或扩充某些外部模块的声明(通常通过 package.json 安装或在“构建”期间生成)。

但这里不是这种情况,file/module 是项目的一部分,您可以删除 declare module "express-custom-types" 包装器。