0
点赞
收藏
分享

微信扫一扫

深入理解TS(2)—— TS中的函数与可调用注解

日月同辉9908 2022-03-20 阅读 66
typescript

TS中的函数与可调用注解

为参数添加注解

在TS中,我们可以为函数的参数添加注解。

为函数返回值添加注解

类似于为函数的参数添加注解,TS也支持为函数的返回值添加注解。(但是一般我们不需要为函数的返回值添加注解,因为TS编译器会自动推断)。

  • 如果我们想要定义一个不返回值的函数,那么可以将函数返回值的类型定义为void。

可选参数

我们可以使用 ? 将某个参数定义为可选的参数。

我们也可以为参数提供一个默认值。(在参数类型声明的后面使用 = initalValue)。

函数重载

函数重载的作用

  • 函数重载通过定义多个同名函数,但是形参不同,而实现,当传入参数不同时,函数将执行不同的逻辑。

声明函数

在没有提供函数实现的情况下,有2种方法可以声明函数。

  • type LongHand = { (a: number): number }

    • 如果想使用函数重载,必须使用这种方法。(因为这种方法可以通过内联注解声明多个函数类型)。
  • type LongHand = (a: number) => number

    • 这种方法可以用于Vue data域 中的函数类型的响应式数据的类型声明。

可调用

TS支持我们使用类型别名或接口来定义一个可被调用的类型注解。

  • interface returnString{ (): string }
  • 这个接口定义了一个可调用注解,它表示一个返回值为 string 的函数。

可调用类型注解有3种情况

  • 使用interface定义一个一个或多个可调用注解,当定义多个可调用注解时,可以使用函数重载。
interface Overload{
    (a: number): number,
    (a: string): string,
}

function stringOrNumber(foo: number): number
function stringOrNumber(foo: string): string

function stringOrNumber(a: any): any
{
    if(typeof a === 'number')
    {
        return a*a;
    }
    else if(typeof a === 'string')
    {
        return 'hello' + a;
    }
}

const func: Overload = stringOrNumber;
const str = func("TS")
const num = func(2)
console.log(str)
console.log(num)
  • TS允许使用箭头函数定义可调用注解,但是使用箭头函数将无法使用函数重载。

  • 可实例化的可调用注解。

    • 它在可调用注解的前面加上了 new 关键字,这表示我们需要使用 new 来调用这个可调用注解。

可调用注解的作用

  • 可调用注解可以用于声明函数重载。

    • 使用接口或类型别名定义多个可调用注解。
  • 可调用注解可以用于快速声明函数类型或在Vue的data中声明一个响应式的函数数据。

    • 使用箭头函数可以实现。
  • 可调用注解可以用于声明构造函数。

    • 使用可实例化的可调用注解实现。
举报

相关推荐

0 条评论