一、函数返回类型
上节我们学习类型注解写过这样一个函数
function getTotal(num1: number, num2: number) {
return num1 + num2;
}
const total = getTotal(1, 2)
我们对函数的参数进行了定义,但是函数最终的返回值一定是number类型的吗?我们把上面的函数稍作改造
function getTotal(num1: number, num2: number) {
return num1 + num2 + "你好";
}
const total = getTotal(1, 2)
我们在函数内部添加了字符串 “你好”,这时函数的返回值就变成了string,如果想要限定函数的返回值必须是number,应该怎样去定义呢?
function getTotal(num1: number, num2: number) :number{
return num1 + num2 + "你好";
}
const total = getTotal(1, 2)
如上面代码所示,我们在参数后加了:number 对函数的返回类型进行定义,结果就是这个函数的返回值一定是number类型。此时我们会看到return后面会提示报错,这也就印证了我们的定义是有效的。
二、函数参数定义
当一个函数的参数是对象时,比如下面的代码,我们应该怎样去定义函数的参数呢?
function fn({ num, str }) {
return one + two;
}
fn({ num: 123, str: "哈哈" });
可能很多人会这样写
function fn({ num:number, str:string }) {
return one + two;
}
fn({ num: 123, str: "哈哈" });
但实际上正确的写法是
function fn({ num, str },{ num:number, str:string }) {
return one + two;
}
fn({ num: 123, str: "哈哈" });
我们要在参数对象外面再写一个对象分别对参数进行类型注解,这就是所谓的函数参数定义了。