[英]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.