TypeScript入门:函数类型接口

741 阅读1分钟

函数类型的定义

  1. 使用变量去定义函数类型
let add: (x: number, y: number) => number
  1. 使用接口定义
interface Add {
    (x: number, y: number): number 
}
  1. 使用类型别名,type关键字
type Add = (x: number, y: number) => number
let add: Add = (a, b) => a + b

混合类型接口

实现一个库函数接口:

  1. 是一个函数
  2. 有版本号
  3. 有静态方法
interface Lib {
    (): void;
    version: string;
    doSomething(): void;
}
// 为了能搞创建多个lib实例
function getLib() {
    let lib = (() => {}) as Lib
    lib.version = '1.0.0'
    lib.doSomething = () => {}
    return lib;
}

let lib1 = getLib()
lib1()

let lib2 = getLib()
lib2.doSomething()

typeinterface多数情况下有相同的功能,就是定义类型。但有一些小区别:

  1. type:不是创建新的类型,只是为一个给定的类型起一个名字。type还可以进行联合、交叉等操作,引用起来更简洁。
  2. interface:创建新的类型,接口之间还可以继承、声明合并。 如果可能,建议优先使用 interface。