在TypeScript中,函数参数可以使用多种类型来定义,以确保类型安全和代码的可维护性。以下是一些常见的TypeScript函数参数类型及其应用场景:
TypeScript支持JavaScript的所有基础类型,如:
number
:用于数字。string
:用于字符串。boolean
:用于布尔值。null
和 undefined
:用于空值。symbol
:用于创建唯一的标识符。示例代码:
function greet(name: string): string {
return `Hello, ${name}!`;
}
function calculate(a: number, b: number): number {
return a + b;
}
除了基础类型,TypeScript还支持更复杂的类型定义:
[]
或Array<T>
。[type1, type2, ...]
。interface
)或类型别名(type
)。(args) => returnType
。|
来表示一个值可以是多种类型之一。&
来组合多个类型。示例代码:
// 数组类型
function getLength(arr: number[]): number {
return arr.length;
}
// 元组类型
function getPersonInfo([name, age]: [string, number]): string {
return `${name} is ${age} years old.`;
}
// 对象类型
interface Person {
name: string;
age: number;
}
function printPerson(person: Person): void {
console.log(`Name: ${person.name}, Age: ${person.age}`);
}
// 函数类型
type GreetFunction = (name: string) => string;
const greet: GreetFunction = (name) => `Hello, ${name}!`;
// 联合类型
function padLeft(value: string, padding: string | number): string {
if (typeof padding === "number") {
return Array(padding + 1).join(" ") + value;
}
if (typeof padding === "string") {
return padding + value;
}
throw new Error(`Expected string or number, got '${padding}'.`);
}
// 交叉类型
interface Named {
name: string;
}
interface Aged {
age: number;
}
type PersonWithAge = Named & Aged;
function printPersonWithAge(person: PersonWithAge): void {
console.log(`Name: ${person.name}, Age: ${person.age}`);
}
问题: 类型不匹配导致的运行时错误。
解决方法: 使用TypeScript的严格模式(strict: true
)并在编译时检查所有可能的类型错误。
问题: 复杂类型难以理解和维护。 解决方法: 将复杂类型分解为更小的、可重用的类型定义,使用接口或类型别名来提高代码的可读性。
通过合理使用TypeScript的类型系统,可以显著提高代码的质量和可维护性。
领取专属 10元无门槛券
手把手带您无忧上云