在我的 TypeScript 项目中,我扩展了快速请求类型以添加自己的属性。我有一个文件
src/types/index.d.ts
,看起来与此类似:
declare module 'express-serve-static-core' {
interface Request {
customFlag?: boolean;
}
}
我的
tsconfig.json
的一部分看起来像这样:
"include": [
"src/**/*.ts",
"./server.ts"
],
当我运行该项目时,它在使用
req.customFlag
时崩溃(表示该类型不存在该属性)。
如果我修改我的tsconfig.json
如下:
"include": [
"src/**/*.ts",
"./server.ts"
],
"files": [
"src/types/index.d.ts"
],
它开始顺利工作。
这是为什么呢?我对 TS 文档的理解是
include
和 files
的解释方式相同,唯一的区别是第一个允许指定模式。
如果我运行
tsc --listFiles --noEmit
,则两个配置的结果都包含 src/types/index.d.ts
。然而对于第一个它不起作用。
我认为表达式
src/**/*.ts
与文件名中的两个点 index.d.ts
不相符。
因此,您可以重命名文件以仅包含一个点或尝试调整表达式。
这只是一个示例,假设您可能想要包含文件名中带有一个或两个点的所有文件,这可能是完全错误的:
src/**/*?.?*.ts
文档中的重要页面是关于 include。