网站搜索

javascript - 我如何在 TypeScript 中引用来自另一个模块的已有类型?


假设我正在编写一个 Node.js 的 hello world 服务器。然后,作为 http.createServer 函数的回调,我有一个基本上长这样子的函数:

(req, res) => {
  // ...
}

现在,如果我想在 TypeScript 中执行此操作,我希望告诉编译器 req 和 res 是来自 Node.js 的适当对象。如何将它们作为类型添加?基本上,这必须看起来像这样:

(req: X, res: Y): void => {
  // ...
}

但是我需要为 X 和 Y 提供什么?我不想从头重新创建一切,而且我想肯定有某种机制可以引用现有类型,不是吗?

我想 req 和 res 的类型已经在某处定义了,例如在 @types/node 中。我如何在自己的代码中使用那些已定义的类型之一?

答案#1

在 http.d.ts 中,声明了 RequestListener 类型。

type RequestListener = (req: IncomingMessage, res: ServerResponse) => void;

你可以从 http 模块中导入这些类型。

import { IncomingMessage, ServerResponse } from 'http';

const requestListener = (req: IncomingMessage, res: ServerResponse): void => {
}

相关文章