我正在使用Visual Studio 2013完全修补。我有一个我刚刚创建的网站,我正在尝试使用jquery,jqueryui和jsrender。我也在尝试使用TypeScript。在ts文件中,我收到如下错误
财产' fadeDiv'类型' {}'。
上不存在
我认为jquery,jqueryui和jsrender对于打字稿有正确的引用..但是从我所看到的这看起来像是一个d.ts问题。希望有人可以帮助我。
javascript中没有错误,但我不想让Visual Studio说如果我可以提供帮助就会出现错误。两次fadeDiv都在javascript中提到它下面有一条红线,两个错误都跟上面说的一样。
感谢 香农
for (int i = 0; i < GridView1.Rows.Count; i++)
{
f_name = ((TextBox)GridView1.Rows[i].FindControl("TextBox1"));
l_name = ((TextBox)GridView1.Rows[i].FindControl("TextBox2"));
contacts = ((TextBox)GridView1.Rows[i].FindControl("TextBox3"));
Console.WriteLine(f_name.Text);
if (f_name != null)
{
string query = string.Format("insert into [StudentsData].[dbo].[Student_Info] values('{0}','{1}','{2}')", f_name.Text, l_name.Text, contacts.Text);
command.CommandText = query;
try
{
conn.Open();
command.ExecuteNonQuery();
Label1.Text = f_name.Text.Trim();
}
finally
{
conn.Close();
}
}
}
对于那些可能会在稍后阅读此内容的人... SUCSS命名空间..在打字稿中看起来我会想要做这样的事情。
/// <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.fadeDiv()调用它来调用SUCSS.fadeDiv在页面加载上运行; 希望能有所帮助。
答案 0 :(得分:83)
只需将任何类型分配给对象:
let bar = <any>{};
bar.foo = "foobar";
答案 1 :(得分:21)
使用数组表示法访问字段,以避免对单个字段进行严格的类型检查:
data['propertyName']; //will work even if data has not declared propertyName
您还可以完全禁用所有变量字段的类型检查:
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
注意:这比仅针对单个字段访问避免类型检查更危险,因为所有字段上的所有连续访问都是无类型的
答案 2 :(得分:12)
在TypeScript中编写以下代码行时:
var SUCSS = {};
SUCSS
的类型是从赋值中推断出来的(即它是一个空对象类型)。
然后你继续在几行后添加一个属性:
SUCSS.fadeDiv = //...
编译器警告你fadeDiv
对象上没有名为SUCSS
的属性(这种警告通常可以帮助你捕捉错字)。
您可以通过指定SUCSS
的类型来修复它(虽然这会阻止您分配{}
,但这并不能满足您想要的类型:
var SUCSS : {fadeDiv: () => void;};
或者通过首先分配完整值并让TypeScript推断出类型:
var SUCSS = {
fadeDiv: function () {
// Simplified version
alert('Called my func');
}
};
答案 3 :(得分:12)
let propertyName= data['propertyName'];
答案 4 :(得分:2)
我建议进行以下更改
let propertyName = {} as any;
答案 5 :(得分:0)
在文件顶部附近,您需要编写var fadeDiv = ...
而不是fadeDiv = ...
,以便实际声明变量。
错误&#34; Property 'fadeDiv' does not exist on type '{}'.
&#34;似乎是在您的示例中未发布的行上触发(该代码段中的任何位置都无法访问fadeDiv
属性)。
答案 6 :(得分:0)
myFunction(
contextParamers : {
param1: any,
param2: string
param3: string
}){
contextParamers.param1 = contextParamers.param1+ 'canChange';
//contextParamers.param4 = "CannotChange";
var contextParamers2 : any = contextParamers;// lost the typescript on the new object of type any
contextParamers2.param4 = 'canChange';
return contextParamers2;
}