美文网首页
TypeScript学习5、函数function

TypeScript学习5、函数function

作者: 喜欢骑着蜗牛散步 | 来源:发表于2019-10-22 11:12 被阅读0次

函数function

// ES5定义函数
function addArg1(arg1: number, arg2: number) :number {
    return arg1 - arg2
}
//ES6
const addArg2 = (arg1: number, arg2: number) => arg1 + arg2

有时候我们在封装一个函数或者插件时,需要传入一个回调函数,这时我们会对这个回调函数有一定的要求,做一定的限定:

let addArg3 :(x:number, y:number) => number
addArg3 = (arg1: number, arg2: number) => arg1 + arg2 
//addArg3 = (arg1: string, arg2: number) => arg1 + arg2 // error:   不能将类型“number”分配给类型“string”。

当然也可以使用类型别名做限定

type AddArg4 = (x: number, y: number) => number;
let addArg4: AddArg4 = (a, b) => a + b;

或者使用接口

interface AddArg5 {
    (a: number, b:number): number 
}
let addArg5: AddArg5 = (a, b) => a + b

类型别名是早起TypeScript做类型约束的主要形式,后来引入接口之后,TypeScript推荐我们尽可能的使用接口来规范我们的代码。


函数设置默认参数

let addArg6 = (a: number, b: number = 0) => a + b;
console.log(addArg6(4)) //4
console.log(addArg6(4, 1)) //5

设置默认参数可以不指定类型,TS会根据参数默认值的类型进行判断。

let addArg7 = (a: number, b = 0) => a + b;
//console.log(addArg7(4, '3')) //error : 类型“"3"”的参数不能赋给类型“number”的参数

有的时候函数参数个数不一定,我们可以使用ES6的...来处理。

let addArg8 = (a: number, ...b: number[]): void => {
    console.log(b)
} ;
addArg8(1,2,3,4,5,6,7,8,9) //[2, 3, 4, 5, 6, 7, 8, 9]

函数重载: 函数的重载指的是两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。

function addArg9 (arg1: string, arg2: string): string;
function addArg9 (arg1: number, arg2: number): number;
function addArg9 (arg1: string | number, arg2: string | number) {
    // 在实现上我们要注意严格判断两个参数的类型是否相等,而不能简单的写一个 arg1 + arg2
    if (typeof arg1 === 'string' && typeof arg2 === 'string') {
        return arg1 + arg2
    } else if (typeof arg1 === 'number' && typeof arg2 === 'number') {
        return arg1 + arg2
    }
}

相关文章

  • TypeScript学习5、函数function

    函数function 有时候我们在封装一个函数或者插件时,需要传入一个回调函数,这时我们会对这个回调函数有一定的要...

  • JS高级必须知道的几个点!

    1.1 函数声明 //ES5 function getSum(){} function (){}//匿名函数 //...

  • ES5 ES6函数

    ES5 定义函数3种形式: 1、function语句形式定义函数 2、function直接量定义函数 3、Func...

  • 被迫开始学习Typescript —— function

    function,翻译为“函数”还是“方法”?我习惯叫“方法”,当然这个不是重点,你说叫啥就叫啥。 普通函数 js...

  • typescript学习-函数

    一. 函数基础 完整的函数声明如下:(x:number, y:number) => number 是类型声明fun...

  • Swift 5 函数 function

    函数 隐式返回: 函数体是单一表达式,函数可以隐式返回这个表达式func sumfunc(v1: Int, v2:...

  • 7.19学习 函数(function)

    程序设计基础之——函数(function) 函数的意义: 从代码说起: ·吃饭:动作,人的行为 ·行为,已经具备了...

  • JS函数

    函数的5种声明 具名函数 匿名函数 具名函数赋值 window.Function 箭头函数 调用函数 f.call...

  • 6. Function

    参考以下文章学习:1. Function - MDN Function 构造函数 创建一个新的 Function ...

  • JS中的函数

    1. 函数的5种声明 具名函数 匿名函数 具名函数赋值 window.Function(全局函数) 箭头函数 2....

网友评论

      本文标题:TypeScript学习5、函数function

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