您的位置:首页> 前端教程> TS教程

TypeScript class类兼容

2019-4-27 08:31| 作者: admin| 查看: 703| 评论: 0|来自: 蚂蚁部落

TypeScript类和接口的兼容性非常类似,但是类分实例部分和静态部分。

比较两个类类型数据时,只有实例成员会被比较,静态成员和构造函数不会比较。

代码实例如下:

[typescript] 纯文本查看 复制代码
class Antzone {
    webName: string;
    constructor(address: string, age: number) { }
}
 
class Other {
    webName: string;
    constructor(age: number) { }
}
 
let ant: Antzone=new Antzone("青岛市南区",4);
let other: Other;
 
other = ant; //赋值成功

赋值成功,反过来也是如此,构造函数是否兼容不会影响。再来看一段代码实例:

[typescript] 纯文本查看 复制代码
class Antzone {
    webName: string;
    constructor(address: string, age: number) { }
}
 
class Other {
    webName: string;
    target:string;
    constructor(age: number) { }
}
 
let ant: Antzone=new Antzone("青岛市南区",4);
let other: Other;
 
other = ant; //赋值报错

因为Other中的所有实例成员必须在Antzone中找到对应的成员。

类私有成员问题:

私有成员会影响兼容性判断,如果目标类型包含一个私有成员,那么源类型必须包含来自同一个类的这个私有成员。 

允许子类赋值给父类,但是不能赋值给其它有同样类型的类。

关于私有成员可以参阅TypeScript 类访问修饰符一章节。

[typescript] 纯文本查看 复制代码
class Antzone {
    webName: string;
    constructor(address: string, age: number) { }
}
 
class Other {
    private webName: string;
    constructor(age: number) { }
}
 
let ant: Antzone=new Antzone("青岛市南区",4);
let other: Other;
 
other = ant; //赋值报错

由于是Other中的webName是私有成员,所以会报错。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部