2016-11-11 82 views
0

我有一个JQuery插件(mixItUp),我尝试使用Typescript,它没有它自己的* .d.ts文件。使用JScript插件使用Typescript

我如何使它与打字稿一起工作?

我做了我自己的mixItUp.d.tds文件,内容如下:

interface JQuery 
{ 
    mixItUp():any; 
} 

在我试图在,我使用下面的代码使用mixItUp模块:

$('#mySelector').mixItUp(); 

它编译得很好,我得到了intellisense for mixItUp,所以不知怎的,它拿起mixItUp.d.ts文件而没有引用它。

在html中,我在jquery中加载,然后在这个模块之前加入了非打字稿(Pure js)mixItUp库,所以我知道jquery和mixitup在那个时候真的存在。

然而,当网页加载完毕后,我得到了以下错误消息:

$(...).mixItUp is not a function(…) 

大多数我发现导游的似乎可以用我的理解是引用* .D的老办法.ts文件。

有人可以请解释正确的方式来使用JScript插件与打字稿,以及如果可能如何引用非打字稿库(我假设技术将类似)。

谢谢。

+0

的是JavaScript的mixItUp文件在页面上? –

+0

@无线电 - 是的。我编辑了我的问题,明确指出这是我所指的“纯js”库。 – Steviebob

+0

不知道这是否有帮助,看看你是否可以在这里重现你的问题:https://jsfiddle.net/dmqr7szq/ – skav

回答

0

如果发生在运行时,它很可能不是由Typescript引起的,因为TS只是被编译为JS。由于TS本身并不了解您的库,只能通过接口获取有关它的信息,因此它会按原样编译该调用(可以通过查看Developer Console中的输出或类似方法来证明这一点)。

所以一定要确保mixItUp装入正确,执行您的代码之前(但jQuery的)之后,它应该工作正常(因为你使用jQuery的版本是由插件支持)

+0

如果我放置$('#mySelector')。mixItUp();直接在页面上,它加载正常,但是当我注释掉并取消注释我的.ts文件中的一个时,我得到错误。 也许如果有人能解释如何通常引入/引用非打字稿库,那可能导致答案? – Steviebob

+0

有很多因素可能影响这里的结果。如果您可以提供更多关于如何构建TS的信息,然后将JS文件包含在您的页面上,那将会很好。页面的内容(或者至少包含JS文件的部分)也有帮助。 – Riiverside

+0

将JS库添加到TS文件时,通常没有什么神奇的做法。其实你甚至不需要做任何特别的事情。 TS编译为JS并与其完全兼容。您可以将自制类型添加到您的项目中(如您所做的那样)以获得代码完成的好处,并编译时检查代码是否正确使用该库。除此之外,它完全是可选的。 – Riiverside