我在单页应用中使用 Angular , Angular CLI , NPM 和 Typescript 。
在我的一个组件中,我需要使用 jQuery 来初始化 jQuery 插件。在我的例子中,插件是backstretch,但这不是那么相关,因为下面描述的问题对于任何jQuery插件都是相同的。
是的,我知道你们有些人会说,Angular和jQuery在一起 - 不是最好的主意。但事实是可重复使用的jQuery插件在Angular应用程序中仍然非常有用。
尽管在VS Code IDE中编写代码时,IntelliSense下拉列表正确显示了jQuery和backstretch的属性,但似乎没有任何错误,运行“ng serve”时会出现问题,因此当TypeScript编译成JavaScript时。
我在控制台中遇到的错误是:
错误 C:/wamp/www/PaperbackComingSoon/Angular/my-app/src/app/app.component.ts (20,7):属性'backstretch'在类型上不存在 'JQueryStatic'。
在下面的屏幕截图中,您可以看到此错误,还可以看到jsconfig.json文件以及jQuery和Backstretch的已安装类型定义。
虽然编译器似乎找到了jQuery,但由于某些奇怪的原因,它有找到后伸的问题。您可以在下面看到backstretch的实际类型定义。
我错过了什么?有没有人知道这里有什么问题?我的Backstretch插件的类型定义文件是否可能不是实际jQuery Backstretch插件的正确版本?
由于我当然正在使用TypeScript,因此我希望所有具有可用于我的类型的输入文件的jQuery插件都是强类型的。如果某个jQuery插件的输入确实可用,我认为没有理由不使用此功能。我知道我可以通过自己定义输入并制作所有类型为“any”的jQuery插件来轻松修复我的编译问题,但这不是我想要的,它似乎不对。我想利用任何打字文件。我没有看到任何原因,只是因为编译器似乎没有找到已定义的属性。
可能的原因
我最好的选择是,这与我的系统上全局安装的TS版本与VS Code IDE中的打字稿之间的差异有关,因为在VSCode中检查右侧底部状态栏中的TS版本时IDE说 2.4.2。
但是如果我在控制台中运行“tsc -v”,它会给我 1.0.3.0 (请注意我之前使用的是Visual Studio)。但即使在我运行“npm install -g typescript@2.4.2之后,这也没有改变任何东西。
任何想法,任何人?
答案 0 :(得分:1)
更新NPM
npm install npm@latest -g
更新打字稿
npm -g upgrade typescript
或
npm install typescript@latest -g
答案 1 :(得分:0)
我终于找到了解决方案。请按照以下步骤操作。
<强> 1。确保在系统上安装了最新版本的Node JS
<强> 2。在控制台中运行&#34; npm install typescript @ latest -g&#34;
第3。在控制台运行&#34; tsc -v&#34;显示TypeScript版本
<强> 4。在角度应用中创建一个名为&#34; typings&#34;的文件夹。并在该文件夹中创建一个名为&#34;&lt;插件名称&gt; .d.ts&#34; (&#34; backstretch.d.ts&#34;在我们的例子中)。
<强> 5。转到typings site (in this case "Backstretch"),复制.d.ts文件的内容并将其粘贴到上面创建的文件中并保存文件。
<强> 6。运行&#34; ng serve&#34;在控制台中它应该正确构建
DONE!