zoukankan      html  css  js  c++  java
  • TypeStrcipt学习(八)Object, object, {} 类型之间的区别

    参考

    一文读懂 TS 中 Object, object, {} 类型之间的区别(优先看)

    总结

    obejct:TypeScript 2.2 引入的新类型,它用于表示非原始类型,没有值,toString()这种,代表非原始值,不包含原始值(number,boolean.....),对 object 类型的变量进行赋值时,如果值对象属性名与 Object 接口中的属性冲突,TypeScript 编译器不会提示任何错误

    // 例1
    const a:object = {}
    a = {
        b: 1
    }
    
    // 例2
    function c(o:object) {
    
    }
    c({d:2})
    
    // 例3
    const obj2: object = { 
      toString() { return 123 } 
    };

    Object:它是所有 Object 类的实例的类型,它由两个接口来定义,有值,toString()这种,包含非原始值(对象)也包含原始值(number,boolean.....),对 Object 类型的变量进行赋值时,如果值对象属性名与 Object 接口中的属性冲突,则 TypeScript 编译器会提示相应的错误

    // 例1
    function func1(x: Object) {
    
    }
    func1('semlinker'); // OK
    
    // 例2
    const obj2: Object = { 
      toString() { return 123 } // Error
    };

    空类型{}:它描述了一个没有成员的对象。当你试图访问这样一个对象的任意属性时,TypeScript 会产生一个编译时错误

    // 例1
    const obj = {};
    
    // Error: Property 'prop' does not exist on type '{}'.
    obj.prop = "semlinker";
    
    // 例2
    const pt = {}; // (A)
    // Property 'x' does not exist on type '{}'
    pt.x = 3; // Error
    // Property 'y' does not exist on type '{}'
    pt.y = 4; // Error
    
    // 例3
    interface Point {
      x: number;
      y: number;
    }
    
    // Type '{}' is missing the following 
    // properties from type 'Point': x, y(2739)
    const pt: Point = {}; // Error
    pt.x = 3;
    pt.y = 4;
    
    // 例4
    const obj = {};
    obj.toString();
    
    // 例5
    const pt = { x: 666, y: 888 };
    const id = { name: "semlinker" };
    const namedPoint = {};
    Object.assign(namedPoint, pt, id);
    
    // Property 'name' does not exist on type '{}'.(2339)
    namedPoint.name; // Error
    
    // 例6
    const pt = { x: 666, y: 888 };
    const id = { name: "semlinker" };
    const namedPoint = {...pt, ...id}
    
    namedPoint.name // Ok

     

  • 相关阅读:
    常用centos命令,经常忘记
    大数据hadoop之最简单理解
    企业级私有镜像仓库Harbor
    docker 修改国内源
    docker镜像仓库
    Dockerfile
    通过docker搭建LNMP平台(以wordpress为例)
    蓝鲸问题库
    docker常用命令
    LVS+Keepalive双机热备 <转>
  • 原文地址:https://www.cnblogs.com/kunmomo/p/15735710.html
Copyright © 2011-2022 走看看