《TypeScript实战指南》—3.1.2 函数类型

举报
华章计算机 发表于 2019/06/16 13:13:00 2019/06/16
【摘要】 本节书摘来自华章计算机《TypeScript实战指南》一书中的第3章,第3.1.2节,作者是胡桓铭。

3.1.2 函数类型

接口能够描述JavaScript中对象拥有的各种各样外形。除了描述带有属性的普通对象外,接口也可以描述函数类型。

为了使用接口表示函数类型,我们需要给接口定义一个调用签名,就像是一个只有参数列表和返回值类型的函数定义。参数列表里的每个参数都需要名字和类型:

interface SearchFunc {

    (source: string, subString: string): boolean;

}

这样定义后,我们可以像使用其他接口一样使用这个函数类型的接口。下例展示了如何创建一个函数类型的变量,并将一个同类型的函数赋值给这个变量:

let mySearch: SearchFunc;

mySearch = function(source: string, subString: string) {

    let result = source.search(subString);

    return result > -1;

}

对于函数类型的检查来说,函数的参数名不需要与接口里定义的名字相匹配。例如,我们使用下面的代码重写上面的例子:

let mySearch: SearchFunc;

mySearch = function(src: string, sub: string): boolean {

    let result = src.search(sub);

    return result > -1;

}

类型检查器会对函数的参数逐个进行检查,要求对应位置上的参数类型是兼容的。如果你不想指定类型,TypeScript的类型系统会推断出参数类型,因为函数直接赋值给了SearchFunc类型变量。函数的返回值类型是通过其返回值推断出来的(此例是false和true)。如果让这个函数返回数字或字符串,类型检查器会警告我们函数的返回值类型与SearchFunc接口中的定义不匹配:

let mySearch: SearchFunc;

mySearch = function(src, sub) {

    let result = src.search(sub);

    return result > -1;

}


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。