Jquery TypeScript不允许在.data()和数字/字符串之间进行比较
由于typescript的强类型特性,在比较jQuery.data()调用的结果和简单类型(如许多字符串)时,它似乎存在问题 例如:Jquery TypeScript不允许在.data()和数字/字符串之间进行比较,jquery,typescript,typescript1.6,Jquery,Typescript,Typescript1.6,由于typescript的强类型特性,在比较jQuery.data()调用的结果和简单类型(如许多字符串)时,它似乎存在问题 例如: var dataValue = $("#myDiv").data("div-index"); if(dataValue === 0) { alert("first item"); } 上述操作将产生一个错误,运算符“==”不能应用于类型“JQuery”和“number”。 TypeScript将.data()的结果视为类型JQuery,因此不可能像复杂
var dataValue = $("#myDiv").data("div-index");
if(dataValue === 0)
{
alert("first item");
}
上述操作将产生一个错误,运算符“==”不能应用于类型“JQuery”和“number”。
TypeScript将.data()
的结果视为类型JQuery,因此不可能像复杂类型所期望的那样,在这两者之间进行求值
目前唯一的解决方法是在.data()
调用的末尾调用.toString()
,但是这意味着修改所有当前的.data()
调用及其比较。这也使得像>
这样的数字比较变得不可能,因为我们无法比较字符串和数字
此问题似乎仅在更新到TypeScript 1.6后出现。它看起来像一个bug。我刚刚查看了这个文件,发现了您的返回类型,但另一个方法重载了 解决方案 根据对
$(“#myDiv”)的调用,只需尝试添加发布线程和发布线程。数据(“div index”)
返回类型
您存储在元素中的值是否实际上是jQuery对象?升级到最新版本的jQuery.d.ts
。我也注意到了这一点。有一个bug会使它使用数据(obj:{[key:string]:any;}):JQuery
而不是。数据(键:字符串):任意
。它是固定的
升级后,data(key:string)
的返回类型为any
,您可以使用类型断言告诉编译器您知道它将是一个数字:
var dataValue = $("#myDiv").data("div-index") as number;
if (dataValue === 0)
{
alert("first item");
}
作为一个不熟悉git的人,我如何知道这个变化是在哪个版本(如果有的话)?同一个包在NuGet中列出了2.2.9的最新稳定版本。@Frayt它在该NuGet包中已修复。我刚查过。
var dataValue = $("#myDiv").data("div-index") as number;
if (dataValue === 0)
{
alert("first item");
}