如何在 Typescript 中扩展 X-Editable jQuery 插件的内部类/原型



在我的 Asp.Net MVC网页中,我正在使用X-Editable jQuery插件。我有一个自定义的复杂表单,可以扩展抽象输入

在普通的javascript中,它的声明如下所示

$.fn.editableutils.inherit(MyCustomForm, $.fn.editabletypes.abstractinput);

但我需要在打字稿 (v0.9.5) 类中拥有它,我以这样的幼稚方式这样做

export class MyCustomForm extends $.fn.editabletypes.abstractinput { ... }

它正在工作,至少它可以编译并转换为 javascript,但有错误。开发(调试)可以跳过这些错误,但是当我发布项目时,所有这些错误都会破坏发布过程。

如何正确扩展这种结构?

$.fn.editabletypes.abstractinput是一个

函数,但被用作类型。

如果你想在TypeScript中扩展Javascript对象,你可以尝试这个解决方案:如何在TypeScript中扩展原生JavaScript数组。


如果$.fn.editabletypes.abstractinput的实现是在 TypeScript 中,则必须定义接口:

interface JQueryFn //*
{
    editabletypes?: XEditableTypes;
}
interface XEditableTypes
{
    abstractinput: XEditableAbstractInput;
}
class XEditableAbstractInput { }
class MyCustomForm extends XEditableAbstractInput
{
}

然而,$.fn目前被定义为any,所以你不会得到可靠的智能感知。

Javascript 对象不是一种类型。TypeScript 类型仅存在于 TypeScript 中。不要混淆概念。

最新更新