typeScript学习的第3天

2019-11-01  本文已影响0人  半瓶不满

为什么总在,那些飘雨的日子,深深的把你忘记。每一个周一,都是难受的,本想周末好好休息放松,结果比上班还累,拖着疲惫的身体,估计得熬到周三,才能缓过来,然后就又周末了,写了个死循环,你说气不气。需要个生活鼓励师啊啊啊啊啊啊啊啊啊啊

interface 和 type 关键字

在TypeScript中的表现:

interface A {
    a: string
    b: number
}

type B = {
    b: number
    c: number[]
}

type C = A | B;    // C类型的变量的键只需包含ab或bc即可,当然也可以abc都有
type D = A & B;    // D类型的变量的键必需包含abc

对于这种表现,可以这样理解:&表示必须同时满足多个契约,|表示满足任意一个契约即可。
interface 和 type 两个关键字因为其功能比较接近:

  1. interface 的特点:
  1. type的特点:
type Tuple = [number, string];
const a: Tuple = [2, 'sir'];
type Size = 'small' | 'default' | 'big' | number;
const b: Size = 24;

基本上所有用interface表达的类型都有其等价的type表达。也有只能用interface表达,无法用type表达,那就是往函数上挂载属性。

extends 关键字

extends本意为“拓展”,也有人称其为“继承”。在TypeScript中,extends既可当作一个动词来扩展已有类型;也可当作一个形容词来对类型进行条件限定(例如用在泛型中)。在扩展已有类型时,不可以进行类型冲突的覆盖操作。例如,基类型中键a为string,在扩展出的类型中无法将其改为number。

type A = {
    a: number
}

interface AB extends A {
    b: string
}
// 与上一种等价
type TAB = A & {
    b: string
}
上一篇 下一篇

猜你喜欢

热点阅读