运算符、条件语句、循环与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
网友评论