在參數(shù)的后面用冒號(hào)“:”來(lái)指定參數(shù)的類型
1.在typescript編寫(xiě)的過(guò)程中可以在var name:string = "shen yubin"當(dāng)你再次賦值給name = "18"的時(shí)候typescript編輯器就會(huì)報(bào)錯(cuò)告訴你name是字符串類型详幽。
需要注意的是編譯后的js文件是不會(huì)報(bào)錯(cuò)的,還是可以正常運(yùn)行泪勒。
2.在typescript中的類型推斷機(jī)制
第一次給參數(shù)賦值的時(shí)候typescript會(huì)自動(dòng)推斷參數(shù)的類型松邪,要賦值的時(shí)候會(huì)提示報(bào)錯(cuò)秋茫。
(因?yàn)閖avascript是弱文本類型胡诗,可以寫(xiě)出非常簡(jiǎn)潔的代碼燕锥,但是在編譯大項(xiàng)目的時(shí)候強(qiáng)類型可以降低系統(tǒng)的復(fù)雜程度,減輕程序員的壓力)
當(dāng)實(shí)在是想要賦值參數(shù)一個(gè)通用的類型的時(shí)候可以用any
var alias:any = "haha";
在任意值上訪問(wèn)任何屬性都是允許的:
let anyThing: any = 'hello';
console.log(anyThing.myName);
console.log(anyThing.myName.firstName);
也允許調(diào)用任何方法:
let anyThing: any = 'Tom';
anyThing.setName('Jerry');
anyThing.setName('Jerry').sayHello();
anyThing.myName.setFirstName('Cat');
可以認(rèn)為威酒,聲明一個(gè)變量為任意值之后窑睁,對(duì)它的任何操作,返回的內(nèi)容的類型都是任意值葵孤。
3.參數(shù)的5種類型
布爾值boolean担钮、數(shù)值number、字符串string尤仍、void箫津、空值(null、undefined)
方法的參數(shù)比如name:string也可以聲明類型
var myname:string = "shen yubin";
var alias:any = "haha";
var age:number = 18;
var man:boolean = ture;
function test():void{
}
function test2(name:string):string{
return "";
}
:void用來(lái)聲明方法不需要任何返回值。因?yàn)槁暶饕粋€(gè) void 類型的變量沒(méi)有什么用苏遥,因?yàn)槟阒荒軐⑺x值為 undefined 和 null
let unusable: void = undefined;
可以通過(guò)class或者接口自定義類型
class Person{
name: string;
age: number;
}
var me: Person = new Person();
me.name = "shenyubin";
me.age = 18;
默認(rèn)參數(shù)和可選參數(shù)
其中b就是有默認(rèn)參數(shù)送挑,在調(diào)用的時(shí)候如果不傳入?yún)?shù)顯示的結(jié)果為“haha”
c為可選參數(shù),當(dāng)沒(méi)有傳入?yún)?shù)的時(shí)候顯示的結(jié)果undefined
function test(a:string, b:string = "haha", c?:string) {
console.log(a);
console.log(b);
console.log(c);
}
test("xxx", "yyy", "zzz");
test("xxx", "yyy");
test("xxx");
需要注意的是不管是默認(rèn)參數(shù)還是可選參數(shù)暖眼,都不能放在必選參數(shù)a的前面!否則就紅燈纺裁!
后測(cè)試和查看現(xiàn)在ES6版本已經(jīng)支持默認(rèn)參數(shù)可以放在必選參數(shù)前面
剩余參數(shù)...rest
其中rest可以寫(xiě)成其它參數(shù)诫肠,比如values,numbers等
我們可以用...rest來(lái)傳遞任意數(shù)量的參數(shù)
不論它有多少個(gè)參數(shù)都能全部傳遞
...rest的反用法目前Typescript中還會(huì)報(bào)錯(cuò)欺缘,不過(guò)編譯后的js可以正常運(yùn)行
如果沒(méi)有足夠的參數(shù)就會(huì)undefined栋豫,過(guò)多就會(huì)只傳遞足夠數(shù)量的參數(shù)