函数类型的定义和使用
比如定义函数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();
}