类的类型比较

101 阅读1分钟

类与对象字面量和接口差不多,但有一点不同:类有静态部分和实例部分的类型 比较两个类类型的对象时,只有实例的成员会被比较。静态成员和构造函数不比较
如下代码所示

class Animal{
    feet:number;
    static sayMyName(){
        console.log('Hello')
    }
    constructor (name:string,numFeet:number){
    }
} 

class Size{
    feet:number;
    constructor(numFeet:number){}
}
let a:Animal;
let s:Size;
a=s;//ok
s=a;//ok

注意: 类的私有成员和受保护的成员会影响兼容性。
当检查类实例的兼容时,如果目标类型包含一个私有成员,那么源类型也必须包含来自同一个类的私有成员。 同样地,这条规则也适用于包含受保护成员实例的类型检查。这允许子类复制给父类,但是不能赋值给其他有同样类型的类。