TypeScript错误:Webpack / Angular 2 / Typeings

时间:2016-06-03 20:53:55

标签: typescript angular webpack definitelytyped tsc

我想知道如何摆脱Typings / TypeScript错误,如:

Property 'modal' does not exist on type 'JQuery'.

据我所知,我已经正确安装了JQuery的最新版本,它肯定会找到并使用它们(我已经测试了这个)。 '模态'属性实际上是我称之为的函数:

$('#popup').modal();
// modal() is part of the Semantic UI library which is available and works in my browser

请注意我使用的是最新版本的Typings v1.0.4,它似乎更喜欢使用globalDependencies而不是" ambient"类型。我的typings.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()等。

您会注意到,对于我的模态定义,我指定了两个可以传入的可选变量(因为这是我使用的语义UI模态()函数的行为)。另外modal()函数递归地返回另一个JQuery对象,因为真正的一个也以这种方式行事 - 这允许我在一个链中多次调用它:

$('#someId').modal('setting', {autoFocus: true}).modal('show')

1 个答案:

答案 0 :(得分:1)

没有错。您收到此错误是因为modal()未显示在jquery.d.ts中。要删除此错误消息,请参阅Converting a jQuery plugin to TypeScript