首页 > 解决方案 > ts-node 没有拾取 d.ts 文件,但 tsc 编译工作正常

问题描述

我正在使用带有 express 的打字稿,试图扩展 express 的请求对象。

这是我的 server.ts:

import express, { Request, Response } from "express";
const app = express();
app.use(function(req: Request, res: Response, next) {
    req.testVal = 200;
});

这是我的extends.d.ts:

declare namespace Express {
    export interface Request {
        testVal: number;
    }
}

我正在使用 VSCode 进行开发。IDE 没有给我任何警告。

编译tsc也可以正常工作。

但是,当我使用 运行它时ts-node,我收到错误消息:

src/server.ts:19:9 - error TS2339: Property 'testVal' does not exist on type 'Request<ParamsDictionary>'.

19     req.testVal = 200;
           ~~~~~~~

标签: typescriptexpress

解决方案


要声明testVal,您可以使用以下代码:

选项1:

declare global {
  namespace Express {
    interface Request {
      testVal : number
    }
  }
}

选项 2:

declare module 'express' {
  interface Request {
    testVal : number
  }
}

我希望它的工作。


推荐阅读