接口定义
可以使用接口的方式来定义一个函数需要符合的形状。
interface Fn {(x: number): string}const fn: Fn = function (x) {return '1'}
重载
JavaScript 中方法的重载:重载指的是两个或者两个以上同名函数,但它们的参数不一样,这时会出现函数重载的情况。
Typescript 中的重载:通过为同一个函数提供多个函数类型定义来实现多种功能的目的。
ES5 中出现同名方法,下面的会替换上面的方法:
function getInfo(name) {}function getInfo(name, age) {}
Typescript 中的重载:
单个参数,不同类型。
function getInfo(name: string): string;function getInfo(age: number): string;function getInfo(str: any): any {if (typeof str === "string") {alert(`姓名:${str}`);} else {alert(`年龄:${str}`);}}getInfo("张三");getInfo(18);getInfo(true); // 错误的写法
多个参数,可选参数。
function getInfo(name: string): string;function getInfo(name: string, age: number): string;function getInfo(name: string, age?: number): void {if (age) {alert(`姓名:${name},年龄:${age}`);} else {alert(`姓名:${name}`);}}getInfo("张三");getInfo(18); // 错误getInfo("李四", 20);
