美文网首页TypeScript基础
TypeScript基础入门 - 类型兼容性 - 枚举和类

TypeScript基础入门 - 类型兼容性 - 枚举和类

作者: 鹏鲲云之上 | 来源:发表于2018-09-11 21:17 被阅读1次

    转发

    TypeScript基础入门 - 类型兼容性 - 枚举和类

    项目实践仓库

    https://github.com/durban89/typescript_demo.git
    tag: 1.4.0
    

    为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。

    npm install -D ts-node
    

    后面自己在练习的时候可以这样使用

    npx ts-node 脚本路径
    

    枚举

    枚举类型与数字类型兼容,并且数字类型与枚举类型兼容。不同枚举类型之间是不兼容的。比如,

    enum Status {
        Ready,
        Waiting,
    };
    
    enum Color {
        Color1,
        Color2,
        Color3,
    };
    
    let s = Status.Ready;
    s = Color.Color1;
    

    运行后会有类似如下的错误提示

    ⨯ Unable to compile TypeScript:
    src/type_compatibility_2.ts(13,1): error TS2322: Type 'Color.Color1' is not assignable to type 'Status'.
    

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

    class PersonType {
        name: string;
        constructor(name: string, age: number) {}
    }
    
    class AnimalType {
        name: string;
        constructor (name: string) {}
    }
    
    let PT: PersonType = new PersonType('a', 1);
    let AT: AnimalType = new AnimalType('a');
    
    AT = PT
    PT = AT
    

    当我们运行这段代码的时候,会发现没有报任何错误

    类的私有成员

    类中的私有成员和受保护成员会影响其兼容性。检查类的实例是否兼容时,如果目标类型包含私有成员,则源类型还必须包含源自同一类的私有成员。同样,这同样适用于具有受保护成员的实例。这允许类与其超类兼容,但不允许使用来自不同继承层次结构的类,否则这些类具有相同的形状。

    本实例结束实践项目地址

    https://github.com/durban89/typescript_demo.git
    tag: 1.4.1
    

    相关文章

      网友评论

        本文标题:TypeScript基础入门 - 类型兼容性 - 枚举和类

        本文链接:https://www.haomeiwen.com/subject/rudpgftx.html