我正在使用Visual Studio 2013完全修补.我有一个我刚刚创建的网站,我正在尝试使用jquery,jqueryui和jsrender.我也在尝试使用TypeScript.在ts文件中我收到如下错误
属性'fadeDiv'在类型'{}'上不存在.
我有正确的参考资料,我认为jquery,jqueryui和jsrender for typescript ..但是从我所看到的这看起来像是一个d.ts问题.希望有人可以帮助我.
在javascript中没有错误,但我不想让Visual Studio说如果我能帮助它就会有错误.两次fadeDiv都在javascript中提到它下面有一条红线,两个错误都说明与上面相同.
谢谢香农
////// /// 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在页面加载上运行; 希望能有所帮助.
只需将任何类型分配给对象:
let bar ={}; bar.foo = "foobar";
使用数组表示法访问该字段以避免对单个字段进行严格的类型检查:
data['propertyName']; //will work even if data has not declared propertyName
您还可以完全禁用所有变量字段的类型检查:
let untypedVariable:any={}; //disable type checking while declaring the variable untypedVariable.propertyName = anyValue; //any field in untypedVariable is assignable and readable without type checking
注意:这比仅避免单个字段访问的类型检查更危险,因为所有字段上的所有连续访问都是无类型的
let propertyName= data['propertyName'];
在TypeScript中编写以下代码行时:
var SUCSS = {};
SUCSS
从赋值推断出类型(即它是一个空对象类型).
然后,您将在几行之后继续向此类型添加属性:
SUCSS.fadeDiv = //...
并且编译器警告您fadeDiv
在SUCSS
对象上没有命名属性(这种警告通常可以帮助您捕获拼写错误).
您可以...通过指定类型来修复它SUCSS
(虽然这会阻止您分配{}
,但不满足您想要的类型):
var SUCSS : {fadeDiv: () => void;};
或者通过首先分配完整值并让TypeScript推断出类型:
var SUCSS = { fadeDiv: function () { // Simplified version alert('Called my func'); } };