【发布时间】:2018-01-01 08:48:45
【问题描述】:
场景
我在我的单页应用中使用 Angular、Angular CLI、NPM 和 Typescript。 p>
在我的一个组件中,我需要使用 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 中的 typescript 的差异有关,因为在检查 VSCode 中右下角状态栏中的 TS 版本时IDE 说 2.4.2.
但如果我在控制台中运行“tsc -v”,它会给我 1.0.3.0(请注意,我之前一直在使用 TS,与 Visual Studio 一起使用)。但是即使在我运行“npm install -g typescript@2.4.2”之后,这也不会改变任何东西。
任何想法,任何人?
【问题讨论】:
-
在您的屏幕截图中,您的当前目录可能在
tsc上有旧版本。尝试在其他地方运行tsc。如果不从 PATH 环境变量中删除屏幕截图中的目录。 -
至于您的实际问题,您是否安装了typings (
@types/jquery-backstretch)?你的tsconfig.json是什么样的? -
谢谢你,Saravana,我一回家就试试。是的,我确实为 jQuery 和 backstretch 安装了类型。我会尽快更新我的问题,提供更多显示其他设置的屏幕截图。
-
我更新并添加了我承诺的截图。我现在正在调查是否可能需要安装正确版本的 backstretch 插件及其类型定义。
标签: angular typescript angular-cli