TypeScript 函數
函數類型
爲函數定義類型
function add(x: number, y:number):number{
return x + y;
}
let myAdd = function(x:number, y:number):number{
return x + y;
}
使用這種方式,爲函數定義返回的類型
function add(x, y) {
return x + y;
}
var myAdd = function (x, y) {
return x + y;
};
//# sourceMappingURL=out.js.map
書寫函數類型
let myAdd: (baseValue: number, increment:number)=>number =
function(baseValue: number, increment: number): number {
return baseValue + increment;
}
書寫函數類型,代表形參爲baseValue和increment兩個都爲number類型,返回的也同樣爲number類型。
推斷類型
// 賦值語句一邊有類型,而另外的一邊沒有類型,此時會自動識別出類型
let myAdd = function(x:number, y:number):number{
return x + y;
}
let myAdd1:(baseValue: number, increment:number) => number =
function(x,y){
return x + y;
}
會自動推斷出類型
可選參數 默認參數
不能傳遞null和undefined作爲參數。
// 可選參數 使用?
function buildName(firstName:string, lastName?:string){
if (lastName)
return firstName + " " + lastName;
else
return firstName;
}
let result1 = buildName("Bob");
let result2 = buildName("bod", "adams");
剩餘參數
function buildName(firstName:string, ...restOfName:string[]){
return firstName + " " + restOfName.join(" "); // 進行字符串的拼接
}
let employeeName = buildName("Joseph", "Samuel", "Lucas");
function buildName(firstName) {
var restOfName = [];
for (var _i = 1; _i < arguments.length; _i++) {
restOfName[_i - 1] = arguments[_i];
}
return firstName + " " + restOfName.join(" "); // 進行字符串的拼接
}
var employeeName = buildName("Joseph", "Samuel", "Lucas");
//# sourceMappingURL=out.js.map
this 箭頭函數保存創建時調用的
// 箭頭函數能保存函數創建時的this的值,不是調用值
let deck = {
suits: ["hearts", "spades", "clubs", "diamonds"],
cards:Array(52),
createCardPicker:function(){
return ()=>{
let pickedCard = Math.floor(Math.random() * 52);
let pickedSuit = Math.floor(pickedCard / 13);
return { suit: this.suits[pickedSuit], card: pickedCard % 13 };
}
}
}
重載
function pickCard(x):any {
if (typeof x == "object"){
let pickedCard = Math.floor(Math.random());
return pickedCard;
}
else if (typeof x == "number"){
let pickedSuit = Math.floor(x);
return { x: x };
}
}
使用if語句即可