《TypeScript》 - 函数

·  阅读 51

这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战

运算符、条件语句、循环与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
复制代码
分类:
前端
标签:
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改