【发布时间】:2018-04-05 15:23:42
【问题描述】:
我有一个依赖于@types/hapi 的 Node 应用程序。我想向此模块中定义的类之一添加一个属性。我尝试通过模块扩充来定义我的新属性:
// my-custom-hapi-typings.d.ts
import * as hapi from 'hapi';
declare module hapi {
interface Server {
myProperty: string;
}
}
这不会导致任何编译器错误,但也不会将myProperty 属性添加到Server 类。当我尝试像这样引用该属性时,我仍然在项目的其他地方遇到错误:
// my-other-file.ts
import * as hapi from 'hapi';
const server = new hapi.Server({ ... });
// error: Property 'myProperty' does not exist on type 'Server'.
server.myProperty = 'hello';
为什么 TypeScript 编译器似乎忽略了我的 .d.ts 文件?我是否需要“导入”文件或以某种方式让 TypeScript 编译器知道该文件存在?我的印象是,只需在源目录中放置一个 .d.ts 文件就足以让 TypeScript 接受这些增强。
【问题讨论】:
-
顶级
import使文件成为模块。尝试删除它。 -
感谢@Aaron 的回复,但我只是尝试删除顶级
import,结果是一样的。 -
尝试将“hapi”放在引号中:
declare module "hapi"。您可能还需要exportServer接口。 -
@Aaron - 将
'hapi'放在引号中解决了这个问题!谢谢!不知道我明白为什么。如果您想添加您的评论作为答案,我会接受。 -
当然,我会尽量在回答中解释...
标签: typescript typescript-typings typescript2.0 typescript-definitions typescript-declarations