ts 类型重载 怎么写
时间: 2024-11-06 14:24:29 浏览: 15
在TypeScript(TypeScript,简称TS)中,类型重载(Type Overloading)是指在同一作用域内为同名的方法或函数提供多个不同的类型签名。这使得开发者能够定义多种行为的同名函数,而编译器可以根据传入的参数类型自动选择最匹配的版本。
以下是一个简单的类型重载的例子,我们有一个计算两个数相加的方法,可以处理数字和字符串:
```typescript
// 数字类型
function add(a: number, b: number): number {
return a + b;
}
// 字符串连接类型
function add(a: string, b: string): string {
return a.concat(b);
}
// 使用时,编译器会根据传入的参数类型自动匹配
let sum1 = add(5, 7); // 结果类型为number
let sum2 = add("Hello", "World"); // 结果类型为string
```
在上述代码中,`add`函数有两个重载:一个是处理数字的,另一个是处理字符串的。如果尝试将数字和字符串混合传递给这个函数,编译器会报错,因为找不到匹配的类型签名。
相关问题
函数重载类型的别名 ts
在 TypeScript 中,函数重载的类型别名可以通过使用`type`关键字来创建。下面是一个示例:
```typescript
type AddFunction = {
(a: number, b: number): number;
(a: string, b: string): string;
};
const add: AddFunction = (a, b) => {
if (typeof a === "number" && typeof b === "number") {
return a + b;
} else if (typeof a === "string" && typeof b === "string") {
return a.concat(b);
} else {
throw new Error("Invalid arguments");
}
};
// 使用示例
console.log(add(1, 2)); // 输出: 3
console.log(add("Hello, ", "world!")); // 输出: Hello, world!
```
在上面的示例中,我们创建了一个名为`AddFunction`的类型别名,它表示一个可以接受两个参数并返回对应类型值的函数。在这个例子中,我们使用函数重载来定义了两种不同的函数签名,分别是接受两个数字参数并返回数字,以及接受两个字符串参数并返回字符串。然后,我们使用`AddFunction`类型别名来定义了`add`函数,并实现了对应的逻辑。
请注意,在 TypeScript 中,函数重载的类型别名需要使用函数签名来定义不同的重载形式,而不是使用多个类型别名来表示不同的函数重载。
TS中重载和重写的区别是什么
重载和重写是两个不同的概念。
重载(Overload)指的是在同一作用域内,函数名称相同但参数列表不同的多个函数,可以根据传入的参数类型和数量来决定调用哪一个函数。
重写(Override)指的是子类重写(覆盖)父类的同名方法,使得子类对象在调用该方法时执行的是子类的实现而不是父类的实现。重写方法具有和被重写方法相同的方法名称、参数列表和返回类型。重写方法必须和被重写方法在同一作用域内,并且被重写方法必须为虚方法(virtual)或抽象方法(abstract)。
阅读全文