function func1(x, y){
return x + y;
}
var func2 = function(x, y){
return x + y;
}
function func1(x: number, y: number): number{ //具名函數定義類型的方式
return x + y;
}
var func3: (x: number, y: number) => number = func1; //匿名函數定義類型的方式
在TypeScript中有嚴格的規定,函數中定義的每個參數都必須有傳回值,否則會編譯異常。
可選參數必須在必填參數後方
,因實際參數與形參在匹配時,是按照順序進行的。function func5(success:boolean, msg?:string) {
if (!success){
console.log(msg);
}
}
function func5(success:boolean, msg:string = "未定義的異常") {
if (!success){
console.log(msg);
}
}
function func6(a:string, b:string, ...other:string[]) {
console.log(a, b, other);
}
//a b ['c','d']
func6("a","b","c","d");
//宣告兩個多載函數
function func7(a:number):number;
function func7(a:string):string;
function func7(a:number | string):number | string {
if (typeof a === 'number'){
console.log("執行參數為數值的邏輯");
}
if (typeof a === 'string'){
console.log("執行參數為字串的邏輯");
}
return a;
}
//編譯正常
var res1 = func7(1);
//會報類型不匹配錯誤
var res2 = func7("Hello");