TypeScript 函数类型知多少

126 阅读1分钟

函数类型的定义和使用

比如定义函数addFn的类型是接收一个number作为参数,同时接收一个string类型的可选参数b,返回一个string类型的函数;

let addFn :(a:number,b?:string, ...rest:string[])=>string

这里有几个知识点,讲解一下:

  • 函数类型的定义是通过箭头函数()=>的形式,没有返回值使用void,eg: let addFn:()=>void;
  • 函数的类型写在形参后面,可选参数在在冒号前加?,默认值写在参数类型后面;

当然默认值类型如果和参数类型一直可以省略,TS会自动做类型推导;

  • 可选参数放在必选参数的后面,这点和js一样;
  • 剩余参数的写法和js一样,类型定义为数组,eg: ...rest:string[];

Promise

创建Promise

new Promise((resolve,reject)=>{});

常用API

  • resolve 静态方法,可以用Promise直接调用,返回一个Promise,表示成功,用then接收;
  • reject 静态方法,可以用Promise直接调用,返回一个Promise,表示异常,用catch接收;
  • then 函数获取promise的resolve的结果;
new Promise((resolve,reject)=>{resolve(111)}).then(res=>{});

then方法的返回值会自动封装另一个Promise, 可以再通过then方法获取返回值;

new Promise((resolve,reject)=>{resolve(111)}).then(res=>{
return 222
}).then(res=>{
});
  • catch 捕捉异常情况,用法和then类似;

async 和 await

async表示这个方法是个异步操作,await表示等待异步操作返回结果,从而将异步变成同步;

async function doSomething(){
   const user = await queryUser();
}