typescript面向对象

本文主要是总结ts面向对象的一些概念及常见的面试问题:

interface:接口,只声明成员方法不做实现,类似模板的概念

class: 类,声明并实现方法。

二者关系:

  • 接口不能实现接口或者类,所以实现只能用于类身上,即类可以实现接口或类
  • 接口可以继承接口或类
  • 类不可以继承接口,类只能继承类
  • 可多继承或者多实现

implements
实现,一个新的类,从父类或者接口实现所有的属性和方法,同时可以重写属性和方法,包含一些新的功能

extends
继承,一个新的接口或者类,从父类或者接口继承所有的属性和方法,不可以重写属性,但可以重写方法

type:

特殊类型:

never :表示永不存在的值的类型,由于运行中断或者陷入无限循环导致没有返回值的类型,比如,从程序运行的维度讲,如果一个函数执行时抛出了异常,那么这个函数变永远不会有值了

any:任意类型,不写类型申明时的默认类型,即不作任何约束,编译时会跳过对其的类型检查

void:无类型,如果是函数则应没有返回值或者返回 undefined

unknown:未知类型,能被赋值为任何类型,但不能被赋值给除了 anyunknown 之外的其他类型,同时,不允许执行 unknown 类型变量的方法

特殊符号:

非空断言操作符,x! 将从 x 值域中排除 null 和 undefined

?. 运算符,可选链 例:a?.b 自动提前判断了a是否为null或者undefined

?? 空值合并运算符,当左侧操作数为 null 或 undefined 时,其返回右侧的操作数,否则返回左侧的操作数。const baz = 0 ?? 42; console.log(baz); // 输出:0  (不能与 && 或 || 操作符共用)

?: 可选属性,例:interface Person { name: string; age?: number; }  age为可选属性,非必填

_ 数字分隔符:分隔符不会改变数值字面量的值,但逻辑分组使人们更容易一眼就能读懂数字,如:const inhabitantsOfMunich = 1_464_301;只能在两个数字之间添加 

#XXX 私有字段,使用 # 号定义的 ECMAScript 私有字段,会通过 WeakMap 对象来存储

** 是幂运算符。3**2 === 9。

typescript面向对象_第1张图片

工具泛型

Partial ,快速把某个接口类型中定义的属性变成可选的

Required把所有的可选的属性变成必选的

async await 和 promise关系 

async await 是 promise 和 generator 函数组合的一个语法糖

你可能感兴趣的