TS知识点

1

createArray<T>(length: number, value: T): Array<T>

第一个T是定义了泛型类型T,后面是对T的使用 。也就是<>里面是定义泛型类型的

2

let x = foo ?? bar(); 等价于 let x = foo !== null && foo !== undefined ? foo : bar();

3

  • !把0、-0、null、""、false、undefined 或者 NaN转化为false,其他为true

  • 4
  • ts中非空断言运算符
  • !在类型检查器无法得出结论的情况下,可以使用新的后缀表达式运算符来断言其操作数为非null且未定义。具体来说,该运算x!产生xwithnull和undefinedexclude类型的值。类似于表单<T>x和的类型声明x as T,!非null声明运算符仅在发出的JavaScript代码中删除。
  • 这个仅仅是为了在写ts的时候防止报错,编译结果还是点操作符号
  • 5
  • () => () => {}
  • 等价于
  • function a(){
  • return function b()
  • }

6

function promiseFunc = function(){

  return new Promise(function(resolve, reject){

    // ...

    if(/* 异步任务执行成功 */) {

      resolve(value)

    } else {

      reject(error)

    }

  })

}

async func(){

  let res = await promiseFunc()

}

// 错误捕获

async func(){

  try{

    let res = await promiseFunc()

  }catch(err){

    alert(err)

  }

}

在执行await promiseFunc() 时候内部实现机制就是resolve会正常返回,如果是reject就会把错误抛到外面,这估计和await内部实现有关。出了

闭包之后会把错误抛出去。

7

let a={name:'你好'}

let b=Object.assign(a,{name:'新数据',c:'ggg'})

Let c=a===b

c=true

这个两个是同一个对象

如果是为了重新生成对象,那么应该使用…语法

let b={…a,{name:'新数据'}}

8

构造函数-实例-原型对象

1 在每一个实例对象中同时有一个 constructor 属性,该属性指向创建该实例的构造函数,

2 通过构造函数得到的实例对象内部会包含一个指向构造函数的 prototype 对象的指针 __proto__。

3 任何函数都具有一个 prototype 属性,该属性是一个对象。构造函数的 prototype 对象默认都有一个 constructor 属性,指向 prototype 对象所在函数。

constructor===.__proto__.constructor 原型对象的constructor指向原型对象所在的函数那么也就是当前函数自己(默认情况下)

TS 知识点

接口

1 额外的属性检查

继承

1  理解 private

然而,当我们比较带有 private或 protected成员的类型的时候,情况就不同了。 如果其中一个类型里包含一个 private成员,那么只有当另外一个类型中也存在这样一个 private成员, 并且它们都是来自同一处声明时,我们才认为这两个类型是兼容的。 对于 protected成员也使用这个规则。(这段自己没有理解)

let greeterMaker: typeof Greeter = Greeter;

greeterMaker.standardGreeting = "Hey there!";

let greeter2: Greeter = new greeterMaker();

console.log(greeter2.greet());

我们创建了一个叫做 greeterMaker的变量。 这个变量保存了这个类或者说保存了类构造函数。 然后我们使用 typeof Greeter,意思是取Greeter类的类型,而不是实例的类型。 或者更确切的说,"告诉我 Greeter标识符的类型",也就是构造函数的类型。 这个类型包含了类的所有静态成员和构造函数。 之后,就和前面一样,我们在 greeterMaker上使用 new,创建 Greeter的实例。

函数

1 函数的完整类型

let myAdd: (x: number, y: number) => number =

    function(x: number, y: number): number { return x + y; };

(x: number, y: number) => number 第一个冒号后面是定义了类型,两个参数加上返回值类型,然后等号后面是函数正在实际定义。

2

 箭头函数能保存函数创建时的 this值,而不是调用时的值

3

class Handler {

    info: string;

    onClickGood = (e: Event) => { this.info = e.message }

}

这是可行的因为箭头函数不会捕获this,所以你总是可以把它们传给期望this: void的函数。 缺点是每个 Handler对象都会创建一个箭头函数。 另一方面,方法只会被创建一次,添加到 Handler的原型链上。 它们在不同 Handler对象间是共享的。

4

函数最后重载没看懂

推广一下自己开发的微信小程序,有兴趣的朋友可以玩一玩

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值