MST

星途 面试题库

面试题:TypeScript中类型别名与接口在定义函数类型时有何不同

请分别使用类型别名和接口来定义一个接受两个数字参数并返回它们之和的函数类型,并阐述两者在定义函数类型时语法和特性上的差异。
33.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

使用类型别名定义函数类型

type AddFunction = (a: number, b: number) => number;

使用接口定义函数类型

interface AddFunction {
    (a: number, b: number): number;
}

语法差异

  • 类型别名:使用 type 关键字,后跟别名名称,直接使用箭头函数的语法来定义函数类型。
  • 接口:使用 interface 关键字,在接口内部使用函数签名的形式来定义函数类型,使用冒号 : 分隔参数列表和返回值类型。

特性差异

  • 合并:接口可以被合并,即多次定义相同名称的接口,其成员会被合并在一起。而类型别名不能被合并,如果重复定义相同名称的类型别名会报错。
  • 实现:类可以实现接口,但不能实现类型别名。当需要明确表达某个类遵循特定的函数类型契约时,接口更合适。
  • 类型保护:类型别名可以参与类型保护,通过类型谓词进行类型缩小。接口一般不直接用于类型保护场景。