运算符、条件语句、循环与JS基础语法类似,就不再记录了。

TypeScript 函数

无返回值函数

定义方式:

function function_name()
{
// 执行代码
}

有返回值函数

定义方式:

function function_name():return_type { 
// 语句
return value;
}

带参数函数

定义方式:

function func_name( param1 [:datatype], param2 [:datatype]) {   
}

可选参数

定义方式:

function func_name( param1 [:datatype], param2? [:datatype]) {   
}

默认参数

定义方式:

function function_name(param1[:type],param2[:type] = default_value) { 
}

剩余参数

定义方式:

function function_name(param1[:type], ...param2[:type[]] = ) { 
}

匿名函数

定义方式:

var res = function( [arguments] ) { ... }

匿名函数自调用

定义方式:

( function( [arguments] ) { ... })()

构造函数

定义方式:

// 注意大小写
var res = new Function ([arg1[, arg2[, ...argN]],] functionBody)

Lambda 函数

定义方式:

( [param1, parma2,…param n] )=>statement;

函数重载

重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

定义方式:

// 参数类型不同
function disp(string):void;
function disp(number):void;

// 参数数量不同
function disp(n1:number):void;
function disp(x:number,y:number):void;

// 参数顺序不同
function disp(n1:number,s1:string):void;
function disp(s:string,n:number):void;

代码示例:

// 无返回值函数
function hasNoneReturnFunction() {
console.log(`无返回值函数`);
}
hasNoneReturnFunction(); // 无返回值函数

// 有返回值函数
function hasReturnFunction(): string {
return '有返回值函数';
}
console.log(hasReturnFunction()); // 有返回值函数

// 带参数函数
function withParameterFunction(name: string, age: number) {
console.log(`${name} is ${age}`);
}
withParameterFunction('zzh', 18); // zzh is 18

// 可选参数
function withOptionalParameterFunction(name: string, age?: number) {
console.log(`${name} is ${age}`);
}
withOptionalParameterFunction('zzh'); // zzh is undefined

// 可选参数
function withDefaultParameterFunction(name: string, age: number = 18) {
console.log(`${name} is ${age}`);
}
withDefaultParameterFunction('zzh'); // zzh is 18

// 剩余参数
function withRestParameterFunction(name: string, ...restNames: string[]) {
const restName = restNames.join(' ');
console.log(`${name} full name is ${name} ${restName}`);
}
withRestParameterFunction('zzh', '李白', '杜甫', '白居易'); // zzh full name is zzh 李白 杜甫 白居易

// 匿名函数
const printName = (name: string) => {
console.log(name);
}
printName('zzh'); // zzh

// 匿名函数自调用
(function(){
console.log('匿名函数自调用');
})() // 匿名函数自调用

// 构造函数
const structorFunction = new Function('a', 'b', 'return a * b');
console.log(structorFunction(1, 7)); // 7

// Lambda 函数
const lambdaFunction = (name: string) => console.log(name);
lambdaFunction('lambdaFunction'); // lambdaFunction

// 函数重载
function showInfo(name: string, age: number): void;
function showInfo(age: number, name: string): void;

function showInfo(x: any, y: any) {
if(typeof x === 'string') {
console.log(`${x} is ${y}`);
} else {
console.log(`${y} is ${x}`);
}
}
showInfo('zzh', 18); // zzh is 18
showInfo(18, 'zzh'); // zzh is 18