TypeScript错误:Webpack/Angular 2/打字



我想知道如何消除打字/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

最新更新