我想知道如何消除打字/TypeScript错误,比如:
Property 'modal' does not exist on type 'JQuery'.
据我所知,我已经为JQuery正确安装了最新的打字机,它肯定会找到并使用它们(我已经测试过了)。"modal"属性实际上是我调用的一个函数,类似于:
$('#popup').modal();
// modal() is part of the Semantic UI library which is available and works in my browser
请注意,我使用的是最新版本的Typeings v1.0.4,它似乎更喜欢使用globalDependencies
而不是"环境"类型。我的打字员.json文件:
{
"globalDependencies": {
"core-js": "registry:dt/core-js#0.0.0+20160317120654",
"jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
"jquery": "registry:dt/jquery#1.10.0+20160417213236",
"node": "registry:dt/node#4.0.0+20160509154515",
"source-map": "registry:dt/source-map#0.0.0+20160317120654",
"uglify-js": "registry:dt/uglify-js#2.6.1+20160316155526",
"webpack": "registry:dt/webpack#1.12.9+20160523035535"
}
}
有没有什么方法可以告诉打字员,像modal()和许多其他函数实际上是可以的,并且不会抛出错误?
更新:根据下面的答案,我通过将以下内容添加到加载custom-typings.d.ts
的自定义打字文件中来解决这些错误
interface JQuery {
modal: (cmd?: string, options?: any) => JQuery;
dropdown: () => void;
checkbox: () => void;
calendar: (options?:any) => void;
}
这个命令告诉Typescript,JQuery对象有额外的可用函数:modal()、dropdown()等
您会注意到,对于我的模态定义,我指定了两个可以传入的可选变量(因为这是我正在使用的Semantic UI modal()函数的行为)。此外,modal()函数递归地返回另一个JQuery对象,因为真正的JQuery对象也是这样操作的——这允许我在一个链中多次调用它:
$('#someId').modal('setting', {autoFocus: true}).modal('show')
没有任何问题。出现此错误是因为modal()
未出现在jquery.d.ts
中。要清除此错误消息,请参阅将jQuery插件转换为TypeScript