属性在类型“{}”上不存在
我正在使用完全修补的Visual Studio 2013。我有一个我刚刚创建的网站,并试图使用jquery,jqueryui和jsrender。我也尝试使用TypeScript。在ts文件中,我收到如下错误:属性在类型“{}”上不存在
属性'fadeDiv'在类型'{}'上不存在。
我有正确的引用,我认为jquery,jqueryui和jsrender打字稿..但从我读过的这看起来像一个d.ts问题。希望有人能帮助我。
在JavaScript中没有错误,但我不想让Visual Studio说有错误,如果我可以帮助它。这两次fadeDiv在javascript中都提到了它下面有一条红线,并且这两个错误都与上面相同。
感谢 香
/// <reference path="../scripts/typings/jquery/jquery.d.ts" />
/// <reference path="../scripts/typings/jqueryui/jqueryui.d.ts" />
/// <reference path="typings/jsrender/jsrender.d.ts" />
var SUCSS = {};
$(document).ready(function() {
SUCSS.fadeDiv();
});
SUCSS.fadeDiv = function() {
var mFadeText: number;
$(function() {
var mFade = "FadeText";
//This part actually retrieves the info for the fadediv
$.ajax({
type: "POST",
//url: "/js/General.aspx/_FadeDiv1",
url: "/js/sucss/General.aspx/_FadeDivList",
//data: "{'iInput':" + JSON.stringify(jInput) + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (xhr, status, error) {
// Show the error
//alert(xhr.responseText);
},
success: function (msg) {
mFadeText = msg.d.Fade;
// Replace the div's content with the page method's return.
if (msg.d.FadeType == 0) {//FadeDivType = List
var template = $.templates("#theTmpl");
var htmlOutput = template.render(msg.d);
$("[id$=lblFadeDiv]").html(htmlOutput);
}
else {//FadeDivType = String
$("[id$=lblFadeDiv]").html(msg.d.FadeDivString);
}
},
complete: function() {
if (mFadeText == 0) {
$("[id$=lblFadeDiv]").fadeIn('slow').delay(5000).fadeOut('slow');
}
}
});
});
对于那些谁可能会读这以后..的SUCSS的命名空间。在打字稿看来我本来想要做这样的事情。
$(document).ready(function() {
SUCSS.fadeDiv();
});
module SUCSS {
export function fadeDiv() {};
};
所以该功能通过使用出口的公开,我可以通过与SUCSS.fadeDiv呼唤出来的()调用SUCSS.fadeDiv对页面加载运行; 希望能有所帮助。
在文件顶部附近,您需要编写var fadeDiv = ...
而不是fadeDiv = ...
,以便实际声明该变量。
错误“Property 'fadeDiv' does not exist on type '{}'.
”似乎是在您没有在您的示例中发布的行上触发的(该代码段中的任何位置均无法访问fadeDiv
属性)。
对不起,这里是完整的代码...只是在示例中留下了一个命名空间,但错误是一样的。错误发生在SUCSS.fadeDiv();在文档加载中,也在SUCSS.fadeDiv = function(){line。 – jvcoach23
这并没有太大的改进,因为您还没有发布'SUCSS'的定义... –
当编写的代码在打字稿以下行:
var SUCSS = {};
类型的SUCSS
从分配推断(即它是一个空的对象类型)。
你然后去属性后添加到该类型的几行:
SUCSS.fadeDiv = //...
,编译器警告你,有没有SUCSS
对象命名fadeDiv
财产(这种警告经常帮助你会发现一个错字)。
你可以......通过指定的SUCSS
类型(虽然这会阻止您指定{}
,不满足你想要的类型)修复:
var SUCSS : {fadeDiv:() => void;};
或者通过指派摆在首位的全部价值,并让打字稿推断类型:
var SUCSS = {
fadeDiv: function() {
// Simplified version
alert('Called my func');
}
};
感谢您的明确解释 – heroin
let propertyName= data['propertyName'];
接入领域使用数组方式来避免严格的类型检查:
data['propertyName']; //will work even if data has not declared propertyName
你似乎缺少至少收盘'}'梅开二度,也许还有其他的代码。 –
您需要将此代码缩减为一个独立的示例,以便人们可以真正重现问题。就目前而言,你有很多使用的变量没有定义,所以我们只能猜测它们的类型。 –