面试题答案
一键面试- 联合类型:
- 描述:联合类型可以表示一个值可以是多种类型中的一种,通过
|
符号连接不同类型。当我们知道函数参数可能的几种具体类型时,可以使用联合类型。 - 示例:
- 描述:联合类型可以表示一个值可以是多种类型中的一种,通过
function printValue(value: string | number) {
if (typeof value ==='string') {
console.log(value.toUpperCase());
} else {
console.log(value.toFixed(2));
}
}
printValue('hello');
printValue(123.456);
- 类型别名:
- 描述:类型别名可以给一个类型起一个新名字,方便在代码中复用。当联合类型比较复杂,需要多次使用时,可以使用类型别名来简化。
- 示例:
type StringOrNumber = string | number;
function printValueAlias(value: StringOrNumber) {
if (typeof value ==='string') {
console.log(value.toUpperCase());
} else {
console.log(value.toFixed(2));
}
}
printValueAlias('world');
printValueAlias(789.123);
- 泛型:
- 描述:泛型允许我们在定义函数、类或接口时不预先指定具体类型,而是在使用时再确定类型,这样可以提高代码的复用性,同时保证类型安全。
- 示例:
function identity<T>(arg: T): T {
return arg;
}
let result1 = identity<string>('test');
let result2 = identity<number>(42);
在处理接收多种不同类型参数且保证类型安全的函数时,如果明确知道参数可能的几种具体类型,联合类型和类型别名是很好的选择;如果函数需要处理不同类型但处理逻辑基本相同,泛型能更好地提高代码复用性。