【问题标题】:Typescript: How to declare an interface when also importing a library?Typescript:如何在导入库时声明接口?
【发布时间】:2015-11-04 01:10:52
【问题描述】:

我使用 stackoverflow How do you explicitly set a new property on `window` in TypeScript? 来扩展窗口。 代码如下所示:

interface Window { appConfig: any; }
window.appConfig = window.appConfig || {};

一切正常。

当我添加行时

import _ = require('lodash');

我收到一个错误

错误 TS2339:“窗口”类型上不存在属性“appConfig”。

我该如何解决这个问题?

我使用 typescript 1.6.2

【问题讨论】:

  • 对于窗口,我通常只是将其设为 any 而不是尝试扩展它。 (<any>window).appConfig = (<any>window).appConfig || {}; 这是可能重复的stackoverflow.com/questions/12709074/…
  • 这不是重复的。我不是在问如何扩展窗口。我在问为什么import语句会带来错误
  • 你试过在界面上方做导入吗?也许 lodash 正在覆盖或创建自己的窗口界面?
  • 是的。你可以在打字稿游乐场看到它

标签: typescript


【解决方案1】:

使用外部模块时,.ts 文件中的接口不会与.d.ts 文件中的接口合并。所以在这种情况下,它不起作用,因为.ts 文件中的Window 接口没有与lib.d.ts 中的Window 接口合并。这是由于外部模块的性质造成的。

要修复它,请移动...

interface Window { appConfig: any; }

...放入定义文件 (.d.ts)。

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 2021-02-20
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    • 2017-02-01
    • 1970-01-01
    相关资源
    最近更新 更多