2017-08-26 63 views
0

我想创建一个小型库作为学习打字稿的借口,但会发生什么是我真的无法导入Javascript库(node-json-equal)到我的打字稿项目。我没有在网上找到很多解释清楚它是如何工作的,所以我打赌你解释我如何正确地解决问题,为什么我的方法不正确......以及我猜是因为正确的外部库没有输入。如何导入打字稿项目中的外部JavaScript库

Project image

+1

您发布的图片看起来更像是您在使用其他工具时遇到问题。有关您的项目的更多信息将使这更容易诊断和帮助。 –

+0

@DanielRosenwasser,谢谢你的参与。 基本上我想创建一个使用TS的JS库。它的任务是接收一个字符串,并根据字符串的内容返回一个特定的JSON对象。 需要知道的重要一点是这个字符串-JSON obj关系是1:1。所有关系都包含在一个大的JSON中(_messages_在图像中),通过_setMessages()_从外部注入。 _setMessages()_中的第一步是检查输入JSON obj是否为空。为了检查,我想使用一个无类型的JSON库:_node-json-equal_。 – Giovarco

+0

我知道......我可以手动完成,但我很想了解TS的工作方式。至少我期待它使用_require()_,但它没有。随意问,如果你有更多的问题。 – Giovarco

回答

0

我终于找到了问题。这与我的源代码没有关系,但是我的dockerfile。基本上我添加了被破坏的package-lock.json,所以最后模块没有被下载。我解决了添加package.json的问题。

0

要与外部JS库工作,你可以:

A)使用分型文件

有很多分型的文件就可以使用了,检查出DefinitelyTyped准备使用定义文件列表的网页。

如果找不到库的定义文件,我强烈建议您自己创建一个。有关如何创建自己的定义文件的更多信息,请查看this guide

B)声明一个变量是你的库

通过使用你告诉编译器不检查类型安全的特定变量声明的关键字。

declare var nodeJsonEqual: any; 

如果使用这种方法,你基本上把类型检查这个变量,它是由你来确保有实际存在一个名为nodeJsonEqual变量在运行时,你调用的函数具有正确的签名。

+0

感谢您的评论。 – Giovarco

+0

我其实尝试了第二种方法,但它不起作用。它在导入声明之后立即执行,但不起作用。问题依然存在:(我做错了什么? – Giovarco

+0

因此,当你使用declare关键字时,你告诉编译器该变量存在于“typescript world”之外,因此你不需要在typescript文件中导入任何东西,但它是你的工作,以确保该库创建一个变量称为相同的声明变量 – hagner

相关问题