函数定义方式
- 变量定义函数
- 接口定义函数
- 类型别名来定义函数
// 变量定义函数let add: (x: number, y: number) => number;// 接口定义函数interface Add {(x: number, y: number): number;}// 类型别名来定义函数type Add = (x: number, y: number) => number;// 使用let add: Add = (a, b) => a + b;
混合类型的接口
一个接口,既可以定义一个函数,也可以像对象一样拥有属性和方法
定义混合类型接口
interface Lib {(): void;version: string;doSomething(): void;}
实现混合接口

增加属性一一对应定义的 interface
let lib: Lib = () => {};lib.version = "1.0";lib.doSomething = () => {};

依旧提示缺少属性,这里使用类型断言,因为我们明确知道这个lib就是我们所定义的接口类型,使用 as Lib
interface Lib {(): void;version: string;doSomething(): void;}let lib: Lib = (() => {}) as Lib;lib.version = "1.0";lib.doSomething = () => {};
这样一个接口就实现了,但
全局变量lib,是一个单例,要想创建多个lib,需使用函数封装,将其定义在一个getLib函数中,返回lib,这样就可以创建多个实例了
interface Lib {(): void;version: string;doSomething(): void;}// 通过调用 getLib 函数,可创建多个实例function getLib() {let lib: Lib = (() => { }) as Lib;lib.version = "1.0";lib.doSomething = () => { };return lib;}let lib1 = getLib();lib1();lib1.doSomething();let lib2 = getLib();
除此之外,接口还可以定义类的结构和类型
