前言
Angular2是以TypeScript語言作為默認編碼語言,所以你看到的全部都是.ts結尾的文件。
那什么是TypeScript
首先,它是一個編譯型語言;既然是編譯型,那么你像重構、導航、智能提醒這種工具屬性就可以發揮出來,所以你會發現使用VS CODE來寫Angular簡直就是絕配。
同時,TypeScript還帶來一些ES6/7才有特性,比如let、const、async等,你無須關心ES幾。
最霸氣,TypeScript還是一個強類型、泛型、多態等一些面向對象編程的東西。
那,為何我們不選它呢?
當然,說了這么多,這跟主題看似無關,但如果你了解這些,才能看到問題的本質。
首先,第一關鍵點編譯型,既然是編譯型,那么你在代碼中出現的任何變量、類、函數都是必須要存在,否則TA就會在編譯時報錯。
但,問題來了,現在的JavaScript世界中已經有那么多現成的第三方庫,難道說都不能用了?非也!
TypeScript一開始就照顧這些了,所以就會有一個叫.d.ts的聲明文件。MS當然不會讓你去編寫這一個文件,所以就有一個叫http://definitelytyped.org/ 網站,TA匯集了很多現成類庫的第三方.d.ts的聲明文件提供我們下載。
方法一
當然是使用最正規軍了,用命令安裝jQuery的聲明文件。
npm install -D @types/jquery
以及使用
import * as $ from 'jquery';$('body').addClass('');完美的智能提示,如果你在VS CODE下的話。
方法二
對于一些并未提供 .d.ts 聲明文件的類庫,我們怎么辦?那當然只能自己寫了。
什么?自己寫?很困難吧!很復雜吧!
沒那么一回事,聲明文件其實是對一些類庫接口的描述,以下是我截取一段jQuery聲明文件的部分代碼
interface JQueryStatic { /**  * 去掉字符串首尾空格  *  * @param str 字符串  * @see {@link https://api.jquery.com/jQuery.trim/}  */ trim(str: string): string;}declare var $: JQueryStatic;我還特意譯成中文,這里的含量很少,最關鍵的就是 declare 它就是把一個變量 $ 定義成類型 JQueryStatic (還是個接口)。
這樣,TS編譯器在遇到 $ 時會去找該類型,并且你的代碼里面不能出現 $.time1() 之類的,因為你的接口,只有一個 $.trim() 。
等等,jQuery幾十個接口,我都要這么寫嗎?
NO!!!當然不是,除非你想寫一個又漂亮、又好看、又是中文、又是完美智能提示的聲明文件的話。
否則,你那就拿 any 類型吧,TA就是萬能貨。你不需要寫一個很復雜的聲明文件,只需要:
declare var $: any;
簡單粗暴有效!
結論
哎~其實是因群里每天都可以看到一句【怎么使用jQuery】;雖然最簡單的結果只需要一句話 declare var $: any;,但我還是
主站蜘蛛池模板:
临汾市|
安图县|
新蔡县|
富顺县|
乌拉特中旗|
云浮市|
聂荣县|
泾川县|
翼城县|
安达市|
SHOW|
平凉市|
化隆|
桐梓县|
乳山市|
孝义市|
海城市|
平昌县|
屯留县|
陈巴尔虎旗|
毕节市|
琼海市|
五莲县|
江阴市|
南宁市|
河北区|
庄河市|
万源市|
兴国县|
富阳市|
巩留县|
仲巴县|
福清市|
察隅县|
连山|
栾城县|
清新县|
溧水县|
麟游县|
定结县|
吴堡县|