我正在使用Visual Studio 2013完全修补.我有一个我刚刚创建的网站,我正在尝试使用jquery,jqueryui和jsrender.我也在尝试使用TypeScript.在ts文件中我收到如下错误
属性'fadeDiv'在类型'{}'上不存在.
我有正确的参考资料,我认为jquery,jqueryui和jsrender for typescript ..但是从我所看到的这看起来像是一个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');
}
}
});
});
Run Code Online (Sandbox Code Playgroud)
对于那些可能稍后阅读过的人... SUCSS命名空间..在打字稿中看起来我会想要做这样的事情.
$(document).ready(function () {
SUCSS.fadeDiv();
});
module SUCSS {
export function fadeDiv () {};
};
Run Code Online (Sandbox Code Playgroud)
因此,通过使用导出使该函数公开,我可以通过使用SUCSS.fadeDiv()调用它来调用SUCSS.fadeDiv在页面加载上运行; 希望能有所帮助.
21s*_*1st 86
只需将任何类型分配给对象:
let bar = <any>{};
bar.foo = "foobar";
Run Code Online (Sandbox Code Playgroud)
Luc*_* C. 25
使用数组表示法访问该字段以避免对单个字段进行严格的类型检查:
data['propertyName']; //will work even if data has not declared propertyName
Run Code Online (Sandbox Code Playgroud)
您还可以完全禁用所有变量字段的类型检查:
let untypedVariable:any= <any>{}; //disable type checking while declaring the variable
untypedVariable.propertyName = anyValue; //any field in untypedVariable is assignable and readable without type checking
Run Code Online (Sandbox Code Playgroud)
注意:这比仅避免单个字段访问的类型检查更危险,因为所有字段上的所有连续访问都是无类型的
Fen*_*ton 12
在TypeScript中编写以下代码行时:
var SUCSS = {};
Run Code Online (Sandbox Code Playgroud)
SUCSS从赋值推断出类型(即它是一个空对象类型).
然后,您将在几行之后继续向此类型添加属性:
SUCSS.fadeDiv = //...
Run Code Online (Sandbox Code Playgroud)
并且编译器警告您fadeDiv在SUCSS对象上没有命名属性(这种警告通常可以帮助您捕获拼写错误).
您可以...通过指定类型来修复它SUCSS(虽然这会阻止您分配{},但不满足您想要的类型):
var SUCSS : {fadeDiv: () => void;};
Run Code Online (Sandbox Code Playgroud)
或者通过首先分配完整值并让TypeScript推断出类型:
var SUCSS = {
fadeDiv: function () {
// Simplified version
alert('Called my func');
}
};
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用部分实用程序类型使所有对象属性成为可选。 https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype
type Foo = {
bar: string;
}
const foo: Partial<Foo> = {}
foo.bar = "foobar"
Run Code Online (Sandbox Code Playgroud)
在文件顶部附近,您需要编写var fadeDiv = ...而不是fadeDiv = ...实际声明变量。
错误“ Property 'fadeDiv' does not exist on type '{}'.”似乎是在您的示例中未发布的行上触发的(fadeDiv该代码段中的任何位置都无法访问属性)。
| 归档时间: |
|
| 查看次数: |
87941 次 |
| 最近记录: |