TypeScript簡(jiǎn)介

參數(shù)

參數(shù)類型

可以在變量的后面用冒號(hào)來(lái)指定該參數(shù)的類型

var myname: string = "hello"
myname = 0 // 提示類型錯(cuò)誤

// typescript有類型推斷
var myage = "xixi"
myage = 13 // 提示類型錯(cuò)誤

不僅可以在變量后面指定類型,還可以在方法后以及方法需要的參數(shù)后面

function test(name: string): string {
    return "test";
}

在類中定義參數(shù)類型

class Person {
    name: string;
    age: number;
}

默認(rèn)參數(shù)

給參數(shù)一個(gè)默認(rèn)值

var myname: string = "hello world"

給方法中的參數(shù)指定一個(gè)默認(rèn)值

function test(a: string, b: string = "jojo") {
    // 可以只傳a值
}

帶默認(rèn)值的參數(shù)要放到函數(shù)的最后面

可選參數(shù)

通過(guò)問(wèn)號(hào)為函數(shù)指定一個(gè)可選參數(shù)

function test(a: string, b?: string, c: string = "jojo") {
    // 
}

可選參數(shù)必須放在必傳參數(shù)后面

函數(shù)

拓展參數(shù)

通過(guò)拓展運(yùn)算符為函數(shù)添加一個(gè)參數(shù)集

function test(...args) {
    args.forEach()
}

該函數(shù)可以接受任意數(shù)量的參數(shù)

function test(a, b, c) {
    console.log(a)
    console.log(b)
    console.log(c)
}

var list = [1,2,3,4];
test(...list);
// 只會(huì)輸出1,2,3
// 因?yàn)閠est方法只能接受三個(gè)參數(shù)

generator函數(shù)

通過(guò)*來(lái)聲明一個(gè)generator函數(shù)

function * doSomething() {
    console.log('start');
    
    yield;
    
    console.log('finish');
}

var func = doSomething();

func.next(); //  輸出start
func.next(); //  輸出finish

在每次調(diào)用next()方法后,程序執(zhí)行到y(tǒng)ield就停止

析構(gòu)表達(dá)式

通過(guò)表達(dá)式將對(duì)象或數(shù)組拆解成任意數(shù)量的變量

function getStock() {
    return {
        code: 'IBM',
        price: 100
    }
}

var {code, price} = getStock()

變量名稱需要一一對(duì)應(yīng)

可以通過(guò)冒號(hào)給對(duì)象里面的修改名稱

var {code: codex, price} = getStock()

var array1 = [1, 2, 3, 4];
var [a, b] = array1;
// a = 1, b = 2
var [ , , , d] = array1;
// d = 4
var [a, b, ...others] = array1;
// a = 1, b = 2, others = [3, 4]

表達(dá)式以及循環(huán)

箭頭函數(shù)

var array = [1, 2, 3, 4, 5]
array.filter(value => value%2 == 0)

forEach()、for in 和 for of

var array = [1, 2, 3, 4];
array.desc = "array";

array.forEach(value = > console.log(value));
// 不允許break,循環(huán)對(duì)象的值
// 1, 2, 3, 4

for(var n in array) {
    console.log(n);
}
// 循環(huán)對(duì)象屬性名稱
// 1, 2, 3, 4, array

for(var n of array) {
    console.log(n);
}
// 忽略屬性,可以通過(guò)break跳出循環(huán)
// 1, 2, 3, 4

面向?qū)ο筇匦?/h2>

類(class)

訪問(wèn)控制符

public共有的,在類內(nèi)部外部均可以使用,默認(rèn)

private私有的,在類的內(nèi)部使用

protected保護(hù)的,類以及其子類中可以使用

class Person {
    // 構(gòu)造函數(shù)
    constructor() {
        console.log("new")
    }

    name;
    eat() {
        console.log("eat")
    }
}

var p1 = new Person();
p1.name = "batman";
p1.eat();

var p2 = new Person();
p2.name = "superman";
p2.eat();

繼承(extends)

通過(guò)super關(guān)鍵字調(diào)用父類的方法

class Employee extends Person {
    // 構(gòu)造函數(shù)
    constructor() {
        super(); // 調(diào)用父類的構(gòu)造函數(shù)
        console.log("new")
    }
}

泛型

通過(guò)<>來(lái)指定數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)的內(nèi)容類型

var work: Array<Person> = [];

接口(Interface)

用來(lái)建立某種代碼約定,使得其他開(kāi)發(fā)者在調(diào)用某個(gè)方法或者創(chuàng)建新的類時(shí)必須遵循接口所定義的代碼約定

通過(guò)interface關(guān)鍵字聲明一個(gè)接口

interface IPerson {
    name: string;
    age: number;
}

class Person() {
    constructor(public config: IPerson) {
    }
}

通過(guò)implements關(guān)鍵字使類實(shí)現(xiàn)接口中的方法

interface Animal {
    eat();
}
class Sheep implements Animal {
    eat() {
        console.log("eat grass")
    }
}
class Tiger implements Animal {
    eat() {
        console.log("eat meat")
    }
}

類型定義文件(*.d.ts)

通過(guò)該文件類型,可以與js其他的模塊協(xié)同工作

參考資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容