學(xué)習(xí)Angular前了解下TypeScript

typescript

Angular2對比于Angular1就像是Java與Javascript僧凰,正因?yàn)樽兓薮笫率荆肁ngularJS來代表1.x版本撮胧,而Angular代表2.x、4.x讥巡、5.x等后續(xù)版本掀亩。參考《Angular權(quán)威教程》記錄一下Angular家族史,本文簡介一下TypeScript欢顷。

原文鏈接

TypeScript

Angular是用一種類似于JavaScript的語言--TypeScript構(gòu)建的槽棍。
TypeScript并不是一門全新的語言,而是ES6的超集抬驴。所有ES6代碼都是完全有效且可編譯的TypeScript代碼炼七。


typescript

TypeScript相對于ES5有五大改善:

  • 類型
  • 注解
  • 模塊導(dǎo)入
  • 語言工具包

類型

TypeScript的類型是可選的。
不過布持,類型檢查的好處在于:
1 有助于代碼的編寫特石,在編譯期預(yù)防bug
2 有助于代碼的閱讀,清晰的表達(dá)作者意圖

字符串

字符串包含文本鳖链,聲明為string類型:

var name: string = 'hello world!';

數(shù)字

無論整數(shù)還是浮點(diǎn)姆蘸,在TypeScript中,所有數(shù)據(jù)都是用浮點(diǎn)數(shù)表示:

var age: number = 25;

數(shù)組

數(shù)組用Array類型表示芙委,因?yàn)閿?shù)組是一組相同數(shù)據(jù)類型的集合逞敷,所以還需要為數(shù)組中的項(xiàng)目指定一個類型

var arr: Array<string> = ['component', 'provider', 'pipe'];
    或
var arr: string[] = ['component', 'provider', 'pipe'];

var arr: Array<number> = [1, 2, 3, 4, 5, 6];
    或
var arr: number[] = [1, 2, 3, 4, 5, 6];

枚舉

枚舉是一組可命名數(shù)值的集合,

enum Man {age, iq, eq};
var man: Man = Man.age;    

任意類型

如果沒有為變量指定類型灌侣,那它的默認(rèn)類型就是any推捐,any類型的變量能夠接收任意類型的數(shù)據(jù)

var something: any = 'hello world';
something = 1;
something = [1, 2, 3];

"無"類型

void表示不期望那里有類型,通常用作函數(shù)的返回值侧啼,表示沒有任何返回值

function setName(name: string): void {
    this.name = name;
}

void類型也是一種合法的any類型

es5中采用的是基于原型的面向?qū)ο笤O(shè)計(jì)牛柒,并不使用類堪簿,而是依賴于原型
在es6中可以使用class表示內(nèi)置的類,如:

class Point {
}

類可以包含屬性皮壁、方法以及構(gòu)造函數(shù)

屬性

屬性定義了類實(shí)例對象的數(shù)據(jù)椭更,如:Point類中可以有x、y屬性
類中的每個屬性都可以包含一個可選的類型蛾魄,如:

class Point {
    x: number;
    y: number;
}

方法

方法是執(zhí)行在類對象實(shí)例上下文中的函數(shù)虑瀑,在調(diào)用對象的方法前,要有這個對象的實(shí)例

class Point {
    x: number;
    y: number;

    moveTo(x: number, y: number) {
        this.x = x;
        this.y = y;
        console.log(this.x, this.y);
    }
}

var p: Point = new Point();
p.x = 1;
p.y = 1;
p.moveTo(10,10);

構(gòu)造函數(shù)

構(gòu)造函數(shù)是當(dāng)類進(jìn)行實(shí)例化時執(zhí)行的特殊函數(shù)滴须,通常會在構(gòu)造函數(shù)中對新對象進(jìn)行初始化
構(gòu)造函數(shù)必須命名為constructor舌狗,因?yàn)闃?gòu)造函數(shù)在類被實(shí)例化時調(diào)用,所以可以有輸入?yún)?shù)扔水,但不能有返回值
當(dāng)類沒有顯式定義構(gòu)造函數(shù)時痛侍,將自動創(chuàng)建一個無參構(gòu)造函數(shù)

class Point {
}
var p = new Point();

等價于

class Point {
    constructor() {
    }
}
var p = new Point();

帶參構(gòu)造函數(shù)

class Point {
    x: number;
    y: number;

    constructor(x: number, y: number) {
        this.x = x;
        this.y = y;
    }

    moveTo(x: number, y: number) {
        this.x = x;
        this.y = y;
        console.log(this.x, this.y);
    }
}    
var p: Point = new Point(1,1);
p.moveTo(10,10);

繼承

面向?qū)ο蟮牧硪恢匾匦跃褪抢^承,繼承表明子類能夠從父類得到它的行為魔市,然后可以在這個子類中重寫恋日、修改或添加行為
TypeScript完成支持繼承特性,用extends關(guān)鍵字實(shí)現(xiàn)

創(chuàng)建父類

class Parent {
    name: string;

    constructor(name: string){
        this.name = name;
    }

    say() {
        console.log('NAME:' + this.name);
    }
}    

子類

class Child {
    age: number;

    constructor(name: string, age: number) {
        super(name);
        this.age = age;
    }

    say() {
        super.say();
        console.log(' AGE:' + this.age);
    }
}

var n: Child = new Child('vist', 25);
n.say();

總結(jié)

在TypeScript和ES6中還有很多優(yōu)秀的語法特性嘹狞,序幕才剛剛拉開。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末誓竿,一起剝皮案震驚了整個濱河市磅网,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌筷屡,老刑警劉巖涧偷,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異毙死,居然都是意外死亡燎潮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門扼倘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來确封,“玉大人,你說我怎么就攤上這事再菊∽Υ” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵纠拔,是天一觀的道長秉剑。 經(jīng)常有香客問我,道長稠诲,這世上最難降的妖魔是什么侦鹏? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任诡曙,我火速辦了婚禮,結(jié)果婚禮上略水,老公的妹妹穿的比我還像新娘价卤。我一直安慰自己,他們只是感情好聚请,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布荠雕。 她就那樣靜靜地躺著,像睡著了一般驶赏。 火紅的嫁衣襯著肌膚如雪炸卑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天煤傍,我揣著相機(jī)與錄音盖文,去河邊找鬼。 笑死蚯姆,一個胖子當(dāng)著我的面吹牛五续,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播龄恋,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼疙驾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了郭毕?” 一聲冷哼從身側(cè)響起它碎,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎显押,沒想到半個月后扳肛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乘碑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年挖息,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兽肤。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡套腹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出资铡,到底是詐尸還是另有隱情沉迹,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布害驹,位于F島的核電站鞭呕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜葫松,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一瓦糕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腋么,春花似錦咕娄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至摧扇,卻和暖如春圣贸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背扛稽。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工吁峻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人在张。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓用含,卻偏偏與公主長得像,于是被迫代替她去往敵國和親帮匾。 傳聞我的和親對象是個殘疾皇子啄骇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • { "Unterminated string literal.": "未終止的字符串文本。", "Identifi...
    一粒沙隨風(fēng)飄搖閱讀 10,560評論 0 3
  • 概述 TypeScript本質(zhì)上是向JavaScript語言添加了可選的靜態(tài)類型和基于類的面向?qū)ο缶幊涛列保瑫r也支持...
    oWSQo閱讀 8,518評論 1 45
  • "Unterminated string literal.": "未終止的字符串文本缸夹。", "Identifier...
    兩個心閱讀 8,369評論 0 4
  • 又是一年愚人節(jié)。我們自己欺騙著自己活在這個愚人的世界里哼转。這不是玩笑,我們深知它不可能是玩笑槽华。我們假裝不懂壹蔓,假裝愚笨...
    AlwaysForeverMO閱讀 1,331評論 0 1
  • 溫潤的揚(yáng)州,十月的秋風(fēng)掃不下來落葉猫态,卻能搖落了一地金色的桂花佣蓉,光燦燦地。 十月金秋的揚(yáng)州亲雪,真是遍地是桂花勇凭。 圖片發(fā)...
    勳君閱讀 503評論 2 5