繁体   English   中英

Angular-cli如何加载类型文件?

[英]Angular-cli How are the type files loaded?

好吧,我今天过得最奇怪。 我在angular-cli项目中使用jQuery和Bootstrap,但我什至不指定它们的位置,就无法理解它如何为打字稿找到类型文件。

例-:

我已经通过angular-cli全局加载了jquery和bootstrap文件。 我什至不必声明jquery变量,如下所示:

declare var $ : JQueryStatic;

VS Code自动获得智能感知,并且编译正常。

现在这是真正奇怪的部分:

当我使用诸如typeahead.js之类的jQuery插件时,我必须以某种方式导入jquery模块,如下所示:

import * as $ from 'jquery';

$("#state_input").typeahead({
            hint: true,
            highlight: true,
            minLength: 1
        }, {
                name: 'states',
                source: this.sourceFactory(this.states)
            });

如果我不这样做,那么上面的代码将失败。 它失败,提示消息typeahead is not a function运行时” typeahead is not a function

它编译良好。

当我之前不需要导入jquery模块并且它已全局加载时,分别导入jquery模块会发生什么变化?

由于缺乏一致性,我真的失去了主意。

我可以想到三种不同的可能性:

A)检查是否已typeahead中定义src/typings.d.ts ,如:

interface JQuery {
    typeahead(options?:any):JQuery;
}

B)检查您的node_modules/@types文件夹,查看是否安装了任何typeahead输入类型。

C)检查node_modules/@types/jquery/index.d.ts是否不是标准jQuery,而是一个twitter / bootstrap / typeahead自定义版本,其中包括用于typeahead的键入(使用ctrl + f(如果使用Mac,则使用command + f))并在该文件中搜索提前输入)。 在这种情况下,该文件夹甚至可能都不称为jquery ,因此请查看其他任何可疑文件夹。

VS Code从这些地方之一获得其自动完成建议。 安装类型可以帮助IDE自动完成,但这并不一定意味着您已经安装了软件包,这就是为什么它在浏览器中失败的原因。

编辑:

D)第四种可能性是键入是在其他地方定义的。 在项目文件夹中搜索* .d.ts文件,以查看非标准位置中是否出现任何内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM