在我的 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 中。不要混淆概念。