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"
包装器。
我正在使用 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"
包装器。