用接口定义函数
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: number, b: number) => a + b
混合类型的接口:既可以定义函数,也可以象对象一样,定义属性和方法
interface Lib {
(): void; //是一个函数,没参数,没返回值
version: string;
doSomething(): void;
}
function getLib() {
let lib = (() => {}) as Lib // 类型断言
lib.version = '1.0.0'
lib.doSomething = () => {}
return lib;
}
let lib1 = getLib()
lib1()
let lib2 = getLib()
lib2.doSomething()
网友评论