【发布时间】:2014-01-24 06:08:19
【问题描述】:
我正在翻译我的一些代码,并且我注意到打字强制的一种特殊行为。我不确定它是否“特殊”,这很可能是意料之中的,但我很好奇如何绕过它。
对于这个例子,我使用Kendo UI 的kendoWindow 小部件,但几乎任何类型的库中的任何“类型”都足以演示它。
export function UserWindow(options) {
var settings = $.extend({
// default settings
}, options);
var $WINDOW = <kendo.ui.Window> {};
$WINDOW = $("<div id='kendo-editor-window' />")
.kendoWindow(settings) // this is where we have now declared the type, basically
.data("kendoWindow");
// here, I want to add my own little method to kendoWindow for the purpose of how
// I intend to use it!
$WINDOW.databind = function(e) { // this is where we run into trouble!
// some code goes here
}
return $WINDOW;
}
现在在普通的 Javascript 下,这不会给我带来任何麻烦。但是.databind(e) 不是kendoWindow 的定义函数,因此它实际上是在阻止我像这样添加它。
我已经能够通过不将变量声明为kendo.ui.Window 类型来解决它,但我想了解如何适当地处理这种情况,换句话说,正确扩展类型以便我获得智能感知如果可能的话,还有整个类型安全的事情。
【问题讨论】:
-
这同样适用于您的情况:stackoverflow.com/questions/13897659/… 您需要找出需要将
databind函数添加到的接口。
标签: typescript