接口

在Typescript里,接口的作用就是为这些类型命名和为你的代码或者第三方代码定义契约。

interface LabelType {
    label: string;
}
function printLabel(labelObj: LabelType) {
    console.log(labelObj.label)
}

可选属性

interface Label {
    label: string;
    width?: number;
}

只读属性

interface Point {
    readonly x: string;
}

const a: Point = {x:'1'}

// cannot assign to 'x' because it is a read-only property.
a.x = '2';

额外的属性检查

即对象字面量会被特殊对待而且会经过额外属性检查,当将他们赋值给变量作为参数传递时,如果对象字面量存在任何“目标类型”不包含的属性时,将会得到一个错误。

在本例中,属性b不存在于目标类型A中。

如何绕开检查: 1. 类型断言

  1. 字符串索引签名

    这里表示的是, A 可以有任意数量的属性。

函数类型 接口除了描述带有属性的普通对象外,还可以描述函数类型:

可索引类型

TypeScript支持两种索引签名,字符串和数字,但是数字索引的返回值必须是字符串索引返回值类型的子类型

字符串索引签名会确保所有属性与其返回值类型匹配。

上述例子要求当key为字符串时,返回值必须为number类型,而 name 不符合

类类型

强制类去符合某种契约

类静态部分与实例部分的区别

当一个类实现一个接口时,只能对实例的部分进行类型检查,constructor存在于类的静态部分,不在类的检查范围内。

继承接口

继承多个接口

Last updated

Was this helpful?