我有以下代码:
var modal = {
content: '',
form: '',
$form: '',
$message: '',
$modal: '',
$submits: '',
href: ''
}
$.modal = function (options) {
var settings = $.extend({}, $.modal.defaults, options),
root = getModalDiv(),
function getModalDiv() {
var modal = $('#modal');
return modal;
};
})(jQuery);
modal.$modal = $.modal({
title: link.title,
closeButton: true,
content: modal.content,
onClose: onModalClose,
minWidth: 315,
maxHeight: false,
width: false,
resizeOnLoad: true
});
modal.$form = modal.$modal.find('.form');
我遇到一个错误,指向.find并说:
“字符串”类型的变量中不存在属性find。我知道错误在说什么,但是我如何将< code>$modal定义为一个我可以使用< code >的变量。查找于?
同样,现在我在typescript世界里,有没有更好的方法来定义modal,而不是在这里将它定义为var?
代码对$的函数赋值。我认为model</code>是不完整的——然而,由于您特别询问了定义类型的问题,我还是会尝试回答。
所以,首先,如果您还没有:从codeplex获取jquery.d.ts,并在您的代码中引用它,如下所示。它将为您提供jQuery的类型声明,这在使用该库时非常有用。它还允许您定义应该是jQuery对象的成员。
///<reference path="jquery.d.ts" />
例如,看一下<code>IModal</code>,它是一个有4个jQuery成员的接口(我猜了一下你想在其他成员上使用什么类型——它们可能不是你想要的):
interface IModal {
content : string;
form : HTMLFormElement;
$form : JQuery;
$message: JQuery;
$modal : JQuery;
$submits: JQuery;
href : string;
}
第二个接口声明,
JQueryStics
,简单地声明了另一个可以在$
对象上访问的静态成员(参见脚注),因为$
在jquery.d.ts文件中实现了JQuerySt的
。
interface JQueryStatic {
modal : any;
};
有了这些,您现在就可以创建带有显式类型信息的模态对象,这些信息由它实现的< code>IModal
接口提供:
var modal : IModal = {
content : '',
form : null,
$form : null,
$message: null,
$modal : null,
$submits: null,
href : ''
}
你可以根据 JQueryStatic
附加组件将你的函数分配给 $.modal:
$.modal = function (options) {
var settings = $.extend({}, $.modal.defaults, options),
root = getModalDiv(),
getModalDiv = function() {
var modal = $('#modal');
return modal;
};
...
})(jQuery);
准备好之后,如果您更正了这个赋值,下面一行应该就可以了:
modal.$form = modal.$modal.find('.form');
注意:我在向现有接口添加成员方面的经验充其量是不确定的——通常编译器出于任何原因都不会选择它们。我发现,随着代码库的增长,这种情况更可能发生,因此很难找出确切的原因。只是需要注意的事情。
我的代码: 错误消息来自TypeScript(3.0)编译器: TS2322:类型“string[]”不可分配给类型“[string, string, string, string, string, string, string]”。“string[]”类型中缺少属性“0”。 如果我将字符串[]更改为只读数组 TS2322:“ReadonlyArray”类型不能分配给类型“[string,stri
我想知道最好的方法,比如我有两个物体 如果objectC由创建 我如何声明/描述objectC,以便编译器/IDE知道它同时具有objectA和objectB的属性? 我想找到一种不需要为objectA和objectB定义接口的方法。我不想为同一个属性写两次声明和定义/求值。如果我在一个对象上有太多的属性,这种冗余是很重要的。 (是否有一个运算符可以提取现有对象的接口/类型?) 可能吗?
我在AngularJS 1.X项目上使用Typescript。我出于不同的目的使用不同的Javascript库。为了对我的源代码进行单元测试,我想使用类型(= 接口)存根一些依赖项。我不想使用 ANY 类型,也不想为每个接口方法编写一个空方法。 我正在寻找一种方法来做这样的事情: 我现在的痛苦是,我要么使用< code>any并实现我的测试用例中调用的所有方法,要么实现接口并实现完整的接口。那太多
问题内容: 我想为我的纯功能组件定义,但出现类型错误: 我知道我可以这样写: 有没有更好的添加方法? 问题答案: 您可以这样输入: 然后,你可以写,而无需强制转换的类型(会)。
我正在努力寻找 有什么不同?
我想实现这样的目标: 下面是我不想做的一个例子(我真的很讨厌JS中的重载黑客): 如何在TypeScript语言中做方法重载?