05、TypeScript 实战 - 函数参数和返回类型定义

前言:学习本节之后,就会对函数的参数和返回值类型定义有通透的了解 易错:我们写的代码其实是有一个小坑的,就是我们并没有定义getTotal的返回值类型,虽然TypeScript可以自己推断出返回值是number类型。 但是如果这时候我们的代码写错了,比如写程了下面这个样子。

function getTotal(one:number,two:number){
   
     
	return one+two +""
}
const  total =getTotal(1,2)
那么tatal就不是number类型了 ,但是不会报错

正确写法

正确是写法-返回值为number
function getTotal(one:number,two:number):number {
   
     
     return one + two
 }
 const tatal = getTotal(1,2)

这样写就必加严谨了 可以看出tatal的类型为number

常见的函数返回值:void ,never,函数参数为对象

void:函数没有返回值

 在实际工作中有很多函数是没有返回值的 例如
function sayhello() {
   
     
    console.log("hello world")
}
这就是没有返回值的函数,我们就可以给他一个类型注解void,代表没有任何返回值。
 function sayhello():void {
   
     
     console.log("hello world")
 }
如果这样定义后,你再加入任何返回值,程序都会报错

never:如果是一个永远都执行不完的函数,就可以定义为never

执行的时候,抛出了异常,这时候就无法执行完了
 function errFuncyion() {
   
     
     throw new Error()
     console.log("hello world")
 }
还有就是循环
 function forNever() {
   
     
     while(true){
   
     }
    console.log("helo world")
 }

函数参数为对象时

易错:

这个坑是大家都喜欢往里跳的
我们如何定义参数对象的属性类型。
我先写个一般javaScript的写法。
function add({
   
     a,b}){
   
     
     return a + b 
 }
 const three = add({
   
     a:1,b:2})
 console.log(three)
 此时three的类型为any 

 这时很多人容易这样写 错误代码示例
 function add({
   
     a:number,b:number}){
   
     
     return a + b 
 }
 const three = add({
   
     a:1,b:2})
//你在编辑器中会看到这种写法是完全错误的。

正确写法

function getNumber({
   
      one }:{
   
     one:number}):number {
   
     
    return one;
  }
const one = getNumber({
   
      one: 1 });

这样写才是正确的写法,