如何在typescript项目中导入外部javascript库

如何在typescript项目中导入外部javascript库,javascript,typescript,module,external,Javascript,Typescript,Module,External,我想创建一个小型库作为学习Typescript的借口,但实际情况是,我无法将Javascript库(NodeJSON equal)导入到我的Typescript项目中。我在互联网上找不到太多解释它是如何工作的,所以我打赌你会给我解释如何正确地解决这个问题,为什么我的方法不正确。。。我猜是因为外部库没有正确地键入 要使用外部JS库,您可以: A)使用打字文件 有许多打字文件可供使用,请查看网页以获取可供使用的定义文件列表 如果您找不到库的定义文件,我强烈建议您自己创建一个。有关如何创建自己的定义文

我想创建一个小型库作为学习Typescript的借口,但实际情况是,我无法将Javascript库(NodeJSON equal)导入到我的Typescript项目中。我在互联网上找不到太多解释它是如何工作的,所以我打赌你会给我解释如何正确地解决这个问题,为什么我的方法不正确。。。我猜是因为外部库没有正确地键入


要使用外部JS库,您可以:

A)使用打字文件

有许多打字文件可供使用,请查看网页以获取可供使用的定义文件列表

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

B)为库声明变量

通过使用declare关键字,您告诉编译器不要检查该特定变量的类型安全性

declare var nodeJsonEqual: any;

如果使用这种方法,基本上需要对该变量进行类型检查,并且由您来确保在运行时确实存在一个名为nodeJsonEqual的变量,并且您调用的函数具有正确的签名

要使用外部JS库,您可以:

A)使用打字文件

有许多打字文件可供使用,请查看网页以获取可供使用的定义文件列表

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

B)为库声明变量

通过使用declare关键字,您告诉编译器不要检查该特定变量的类型安全性

declare var nodeJsonEqual: any;


如果使用这种方法,基本上需要对该变量进行类型检查,并且由您来确保在运行时确实存在一个名为nodeJsonEqual的变量,并且您调用的函数具有正确的签名

我终于找到了问题所在。它与我的源代码无关,但与我的dockerfile有关。基本上,我添加了已损坏的package-lock.json,因此最终没有下载模块。我解决了添加package.json的问题。

我终于找到了问题所在。它与我的源代码无关,但与我的dockerfile有关。基本上,我添加了已损坏的package-lock.json,因此最终没有下载模块。我解决了添加package.json的问题。

谢谢你的评论。我实际上尝试了第二种方法,但不起作用。它把它放在import语句后面,但它不起作用。问题仍然存在:(我做错了什么?所以当你使用declare关键字时,你告诉编译器变量存在于“typescript世界之外”。因此,您不需要在typescript文件中进行任何导入。但是,您的工作是确保库创建一个名为与声明的变量相同的变量,以及此库变量应包含哪些内容?我不确定我做错了什么。您能给我写一个代码段让我理解吗?我的意思是,如果我声明了一个变量,而我不导入任何变量问题是,我的程序怎么能理解我想要使用那个库?我希望至少我必须使用“require”。顺便说一下,我尝试了“require”,但它不起作用:(谢谢你的评论。我实际上尝试了第二种方法,但不起作用。它将它放在import语句之后,但不起作用。问题仍然存在:(我做错了什么?所以当您使用declare关键字时,您告诉编译器变量存在于“typescript世界之外”。因此,您不需要在typescript文件中进行任何导入。但是,您的工作是确保库创建一个名为与声明的变量相同的变量,以及此库变量应包含哪些内容?我不确定我做错了什么。您能给我写一个代码段让我理解吗?我的意思是,如果我声明了一个变量,而我不导入任何变量问题是,我的程序怎么能理解我想要使用那个库?我希望至少我必须使用“require”。顺便说一下,我尝试了“require”,但它不起作用:(您发布的图像看起来更像是您在使用另一个工具时遇到了问题。有关您的项目的更多信息将使诊断和帮助更容易。@DanielRosenwasser,感谢您的参与。基本上,我想使用TS创建JS库。它的任务是接收字符串,并根据字符串的内容,返回一个特定的JSON对象。需要知道的重要一点是,这个字符串JSON obj关系是1:1。所有关系都包含在一个大JSON(图像中的消息)中,通过setMessages()从外部注入。setMessages()中的第一步检查输入JSON obj是否为空。要检查这一点,我想使用一个非类型化的JSON库:node JSON equal。我知道……我可以手动完成,但我真的想了解TS是如何工作的。至少我希望它使用require()工作,但它没有。如果您有更多问题,请随时提问。您发布的图像看起来更像是您使用其他工具遇到问题。有关您的项目的更多信息将使诊断和帮助更容易。@DanielRosenwasser,感谢您的参与。基本上,我想使用TS创建JS库。其任务是接收一个字符串,并根据字符串的内容返回一个特定的JSON对象。需要知道的一件重要事情是,这个字符串JSON obj关系是1:1。所有关系都包含在一个大JSON(图像中的消息)中,通过setMessages()从外部注入。setMessages()中的第一步检查输入JSON obj是否为空。要检查这一点,我想使用一个非类型化的JSON库:node JSON equal。我知道……我可以手动完成,但我需要