簡體   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