在TS中,函数的定义和调用非常类似于JavaScript。
使用function
关键字,后面跟着函数名,参数列表和函数体。例如:
function add(a: number, b: number): number {
return a + b;
}
上述代码定义了一个函数add
,它接收两个number
类型的参数a
和b
,并返回它们的和。
函数的调用使用函数名后面跟着参数列表的方式。例如:
const result = add(2, 3);
console.log(result); // 输出 5
上述代码调用了定义好的add
函数,并将两个参数2
和3
传递给它。函数执行后会返回结果5
,并将结果赋值给变量result
。最后,使用console.log
函数输出结果。
可以在函数的定义中使用冒号(:
)来指定参数的类型,以及使用箭头(=>
)来指定函数的返回类型。在调用函数时,也可以根据函数定义中的参数类型来传递参数,并根据返回类型来处理函数的返回值。
TS中的参数类型注解可以用来指定函数的参数的类型。下面是一些常见的参数类型注解的示例:
function sum(a: number, b: number): number {
return a + b;
}
function greet(name: string): string {
return `Hello, ${name}!`;
}
function calculateTotal(numbers: number[]): number {
let total = 0;
for (let num of numbers) {
total += num;
}
return total;
}
function printPerson(person: { name: string, age: number }): void {
console.log(`Name: ${person.name}, Age: ${person.age}`);
}
function printValue(value: any): void {
console.log(value);
}
|
符号将多个类型连接在一起表示。例如,下面的代码定义了一个变量 myVariable
,它可以是 number
类型或者 string
类型:
let myVariable: number | string;
这样一来,我们就可以给 myVariable
赋值为一个 number
类型的值或者一个 string
类型的值。
myVariable = 42;
myVariable = "Hello, world!";
使用联合类型注解可以增加代码的灵活性,允许在一定程度上处理多种类型的情况。但是需要注意的是,联合类型的变量在使用时只能使用两个类型的共有属性或方法,不能使用特定类型的属性或方法。
let myVariable: number | string;
myVariable.toString(); // 正确,因为 number 和 string 类型都有 toString() 方法
myVariable.toFixed(); // 错误,因为只有 number 类型有 toFixed() 方法
函数中使用同理
function printId(id: number | string) {
console.log(id.toUpperCase());
Property 'toUpperCase' does not exist on type 'string | number'.
Property 'toUpperCase' does not exist on type 'number'.
}
在需要对某个变量的类型进行限定,但又不确定具体类型时,联合类型注解是一个很有用的工具。
这些注解可以提供类型检查和智能提示,从而帮助我们避免一些常见的错误。