//es5定義函數的方法
//1函數聲明
function run() {
return 'run';
}
//2匿名函數
var run2 = function () {
return 'run2';
}
//ts 定義函數的方法:同上
function runTS(): string {
return 'runTS';
}
var runTS2 = function (): number {
return 123;
}
function getInfo(name: string, age: number): string {
/**
*
* 字符串模板
* ts裏支持在字符串中插入變量,格式爲${},注意字符串必須用``包裹
*/
return `${name} ---- ${age}`;//模板字符串
}
// alert(getInfo('zhangsan', 20));
console.log(getInfo('zhangsan', 20));
var getInfo2 = function (name: string, age: number): string {
return `${name} === ${age}`;
}
console.log(getInfo2('匿名函數', 3));
//沒有返回值
function runTS3(): void {
}
//可選參數
//ts 參數可傳可不傳 ?表示可選參數
//可選參數必須配置到參數的最後面
function getInfo3(name: string, age?: number): string {
if (age) {
return name + age;
} else {
return name + 'age保密';
}
}
console.log(getInfo3('zhangsan', 30));
console.log(getInfo3('lisi'));
//默認參數 用法類似可選參數
function getInfo4(age: number = 20, name: string, adress: string = 'beijing'): string {
// return name+age+adress;
return `${name}--${age}--${adress}--`
}
console.log(getInfo4(20, 'zhangsan'));
//剩餘參數 三點運算符...
function sum(a: number, b: number, c: number): number {
return a + b + c;
}
//三點運算符
function sumArr(a: number, b: number, ...result: number[]): number {
let sum = a + b;
for (let i = 0; i < result.length; i++) {
sum = sum + result[i];
}
return sum;
}
console.log(sumArr(1, 2, 3, 4, 5, 6, 7, 8, 9));
/**
* 重載 面向對象的編程,方法名相同,參數數量不同或者類型不同
*
* es5出現同名方法,下面的會替換上面的方法
*/
/**
*
* ts的重載 先定義,後實現
* */
function getInfo5(name: string): string;
function getInfo5(age: number): number;
function getInfo5(str: string | number): string | number {
if (typeof str == 'string') {
return 'name==' + str;
} else {
return 'age==' + str;
}
}
console.log(getInfo5('zhangsan'));
console.log(getInfo5(10));
function getInfo6(name: string): string;
function getInfo6(name: string, age: number): string;
function getInfo6(str: string, age?: number): string {
if (age) {
return 'name==' + str + ' age==' + age;
} else {
return 'age==' + str;
}
}
console.log(getInfo6('lisi'));
console.log(getInfo6('lisi', 30));
//箭頭函數 es6的語法
setTimeout(function () {
console.log('fucntion');
}, 1000);
//箭頭函數的this指向上下文
setTimeout(() => {
console.log('箭頭函數');
}, 1000);