【问题标题】:TypeScript: merging interfaces across filesTypeScript:跨文件合并接口
【发布时间】:2014-06-11 23:44:48
【问题描述】:

我正在使用 TypeScript 构建一个网站,并且已经获得了一个 JS 类来使用该挂钩进入 JQuery(即您可以通过

访问它
$.scPlayer.functionName()

jquery.d.ts 中的核心 JQuery 定义当然不知道这一点,因此编译器会抛出错误(即使实际代码在浏览器中工作)。所以我正在尝试将 JQueryStatic 接口与我创建的接口合并,即

interface JQueryStatic
{
    scPlayer:any;
}

据我所知,TS 编译器应该认识到这两个接口是相同的并将它们合并,将我的属性添加到另一个接口。

现在,如果我将它包含在 JQuery 定义文件中,无论是在现有定义中(显然)还是作为一个新的、单独的 JQueryStatic 接口,这都可以正常工作......但理想情况下,我想避免为了着想而改变它我健忘的未来自我,所以我尝试在单独的定义文件中创建新界面。但这不起作用 - 我的新界面似乎只是覆盖了 JQuery 界面。

这可能吗?我做错了什么?

【问题讨论】:

    标签: interface merge typescript


    【解决方案1】:

    您的界面工作正常。我已在 Visual Studio 中名为 scplayer.d.ts 的文件中将其添加到 jquery.d.ts 旁边。

    我从 nuget 中获取了 jQuery 类型定义。

    interface JQueryStatic {
        scPlayer: any;
    }
    

    这使接口与 jQuery 定义分开。

    【讨论】:

    • 这很奇怪 - 仍然不适合我。请问您是如何导入/包含定义文件的?我正在使用:/// <reference path="definitions/scplayer.d.ts"/>/// <reference path="definitions/jquery.d.ts"/>
    • 实际上,我刚刚获取了最新的定义文件,现在运行良好,嘿嘿。干杯:)
    • 是否需要在同一个文件夹中?
    猜你喜欢
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2016-12-26
    • 2019-08-17
    • 1970-01-01
    • 2020-09-29
    • 1970-01-01
    • 2015-05-20
    相关资源
    最近更新 更多