TypeScript 函數app
爲函數定義類型dom
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類型。ui
// 賦值語句一邊有類型,而另外的一邊沒有類型,此時會自動識別出類型 let myAdd = function(x:number, y:number):number{ return x + y; } let myAdd1:(baseValue: number, increment:number) => number = function(x,y){ return x + y; }
會自動推斷出類型this
不能傳遞null和undefined做爲參數。spa
// 可選參數 使用? 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的值,不是調用值 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語句便可rest