函数

作者: 糖糖不加糖_ | 来源:发表于2019-10-22 15:01 被阅读0次

    ⚠️ 下述所有❌ 的地方均指编译错误,但实际为可运行状态,javascript为弱类型语言导致(Typescript相当于一个严格性的刻度盘,你可以将指针拔动到你想要的位置。)

    定义函数

    下面代码中包含了ES5、ES6两种函数定义的方式

    // ES5
    function fun1 (a: number): string {  // a: number 输入参数a为number类型, fun1 (a: number): string函数返回值类型为string类型
      return '你好啊'
    }
    // ES6
    let fun2 = (a: number): string => '你好啊';
    

    若非必要,TypeScript通常不需要单独为函数定义返回值类型,因为TypeScript能够根据返回值自动推断出返回值类型

    输入参数

    必要参数

    若非特意,一般函数参数都为必要参数,必要参数都必须一一对应,多或者少都无法通过检查

    let fun1 = (a: number, b: string): number => 0;
    fun1(2,'你好啊');
    fun1(2);  // ❌ 应有 2 个参数,但获得 1 个。
    fun1(2,'你好啊', 'hello'); // ❌ 应有 2 个参数,但获得 3 个。
    

    可选参数

    如果希望参数是可选择输入的,那么可以使用字符来将参数变为可选参数,注意,可选参数必须被放置在必要参数后面,原因:当必要参数和可选参数全都被输入值时,调用不会出现问题,但当只输入可选参数后的必要参数时,编译器无法判断输入的是可选参数还是必要参数

    //  可选参数在必要参数后
    let fun1 = (a: number, b?: string): string => '你好啊';
    fun1(2, 'hello');
    fun1(2);
    // 可选参数在必要参数前
    let fun1 = (a?: number, b: string): string => '你好啊'  // ❌ 已声明“b”,但从未读取其值。必选参数不能位于可选参数后
    fun1(2, 'hello');
    fun1(2) //  ❌ 应有 2 个参数,但获得 1 个。
    

    默认参数

    可以为参数提供一个默认值,当用户没有上传这个参数,或者传入的值为undefined时,该参数的值为此默认值。注意⚠️:带默认值的参数并不需要放在参数的最后面,他可以在任何位置,但如果不是放在最后,就必须使用undefined对该参数的位置进行占位处理,若使用了null,则会将null当作输入值处理输出,不会输出默认值

    let fun1 = (a = '小明', b: string) => console.log(b,a)
    fun1(undefined, '你好');  // 你好小明
    fun1(null, '你好');   //  ❌ 类型“null”的参数不能赋给类型“string | undefined”的参数, 输出值为:你好null
    

    剩余参数

    想操纵参数,但是并不知道有多少个参数会被传进来,可以使用剩余参数,即把所有参数收集到一个变量中加省略号即可。剩余参数:可以一个都没有,也可以有很多个

    let fun1 = (a = '小明', ...b: string[]) => {
      const c = a + ' ' + b.join(' ');
      console.log(c)  
    }
    fun1(undefined, '你好', '我好', '他好', '大家好');  // 小明 你好 我好 他好 大家好
    

    相关文章

      网友评论

          本文标题:函数

          本文链接:https://www.haomeiwen.com/subject/esrvmctx.html