typescript 判断异步执行已经结束_TypeScript&JavaScript 容易忽略的知识点

本文深入探讨了TypeScript与JavaScript中的异步处理,重点讲解Promise的优势及状态管理,包括Fulfilled、Rejected和Pending状态。还介绍了TypeScript的type关键字、unknown与any的区别、泛型和const关键字的使用。同时,文章提到了JavaScript中的异步迭代器、生成器、迭代器的next方法以及!!运算符的作用。此外,还讨论了TypeScript中void类型、never类型和迭代器在Node.js中的应用,以及如何将callback转换为Promise。
摘要由CSDN通过智能技术生成

2f4ee8fcefd5ad743e3d823344bf2a85.png

TypeScript & JavaScript 学习笔记

记录学习TypeScript,Js过程中遇到的一些问题
  • TypeScript中type关键字: 一种用法是JsonPrimitive = null| boolean| string| number 这种是union type, 可以理解为这是一种类型的集合
  • TypeScript可以理解为Js的超集,即在Js的基础上增加静态类型检查等等
  • JavaScript中的Promise是抽象异步处理对象以及对其进行各种操作的组件,即对于异步的处理抽象并提供了标准的错误处理,以及回调机制
  • Promise an object that will return a value in future. Promise非常适合于异步的JavaScript编程。
  • PromiseCallback本质上是等价的,但是Promise有着如下一些优点
  • Promise减少了很多嵌套代码,reduce the amount of nested code
  • Promise 允许简单的可视化执行流程
  • Promise 可以统一的在最后的chain中处理错误,chargeCustomer(customer).then(_ => addToDatabase(customer)).then(_ => sendEmail(customer) ).then(result => res.send('success!'))).catch(err => console.log(err))
  • Promise状态,通过new Promise实例化的promise对象有以下三种状态
    • has-resolution - Fulfilled: resolve成功,此时会调用onFulfilled
    • has-rejection - Rejected: reject失败,此时会调用onRejected
    • unresolved - Pending 既不是resolve,也不是reject,Promise对象刚被创建后的初始化状态
  • Promise初始化传入resolverejectresolve向then传递信息,rejectcatch传递信息
  • await/async try catch
  • async/await 搭配使用处理异步流程即,一个async function通常会带有一个await. 且await会暂停程序的执行流程直到promise resolvedawait只能在async函数体里面使用
  • async function会将结果包装成一个Promise返回
  • TypeScript: unknown 关键字和any关键字差不多。任何一个类型的值可以赋值给unknown,然而和any不一样的是:1. 不能访问unknown类型的属性(properties), 2. 不能调用unknown,和构造(can't call/construct unknown type)。
  • unknown类型只能赋值给unknown,any类型,unknown类型的主要目的是在any类型的基础上加一些限制。
let foo: unknown = 10;

function hasXYZ(obj: any): obj is {
     x: any, y: any, z: any } {
    
    return !!obj &&
        typeof obj === "object" &&
        "x" in obj &&
        "y" in obj &&
        "z" in obj;
}

// Using a user-defined type guard...
if (hasXYZ(foo)) {
    
    // ...we're allowed to access certain properties again.
    foo.x.prop;
    foo.y.prop;
    foo.z.prop;
}

// We can also just convince TypeScript we know what we're doing
// by using a type assertion.
upperCase(foo as string);

function upperCase(x: string) {
    
    return x.toUpperCase();
}
  • TypeScript中is关键字,通常用作于类型预测(type predicate), 当TypeScript使用了type predicate之后,在代码块中将指定了对象的类型,有两个优点,即类型检查,和ide支持intelligence。
  • TypeScript支持泛型(generic, template),泛型区别于any,设计泛型的关键是在于成员之间提供有意义的约束,即限定了所有以泛型类型传参的地方,泛型可以传递并捕获对象的类型信息,类似于类型约束,例如可以实现泛型的queue等等,泛型通常用于实现通用且可复用的组件。
  • TypeScript中的const关键字即在变量声明时进行初始化,切const关键字不允许给已声明的变量重新赋值(prevents re-assignment to a variable
  • JavaScr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值