【发布时间】:2015-11-02 07:32:03
【问题描述】:
我在 webstorm 中使用 ES6 样式的模块包含,我有一个 express 应用程序,它有一个自定义的 d.ts(用于改变对象的中间件),看起来像这样:
declare module Express {
export interface Application {
getLogger(): LoggerInstance;
getRepository(collectionName): IRepository;
getEnvironmentVars(): any;
}
}
现在 IDE 看到了这个,每当我使用它时都没有错误,但是当我通过 TSC 运行它时,它会显示'getRepository' does not exist on type 'Application'
我有很多其他 d.ts 文件都可以正常工作,但没有列出任何错误,也没有什么奇怪的地方。
这方面的一个示例用例可能是:
import { Express } from "express"
export function SomeMiddleWare(app: Express){...};
(express.d.ts 中的 Express 扩展了包含其他文件中的扩充的应用程序。)
所以我很困惑为什么它可以在 IDE 中工作,但不能在 TSC 中工作,TSC 包括一个类型目录中的所有 *.d.ts 文件,没有与 d.ts 文件一起列出的错误只是使用此特定 d.ts 中定义的用法。
【问题讨论】:
-
你使用什么参数/配置来运行 tsc?
-
它正在通过 gulp-typescript 运行,并且正在传递源文件和输入文件。我知道这与用于其他 5 个遵循相同约定的项目的构建脚本完全相同(
src用于源文件的文件夹,typing用于类型文件的文件夹),它包括所有子目录和所有源中的所有 ts d.ts 文件位于 typings 文件夹的子目录中。此外,我还有 3 个其他自定义 d.ts 文件,它们扩展了 mongodb 和其他库,它们都被正确使用,并且与没有行为的 d.ts 文件位于同一文件夹中。
标签: express typescript