• 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

     

  • 相关阅读:
    Java 函数式编程—@FunctionalInterface----functional interface
    人月神话的博客
    如何度量复杂度
    泛型沉思录:创建模版与使用模版生成代码
    ioc与bean管理
    模式(思维)匹配是什么
    简析散光的成因,以及什么是散光的度数和轴位?
    概括是什么?
    思维与模型、世界观
    抽象、维度、层次与分析、综合
  • 原文地址:https://www.cnblogs.com/kunmomo/p/15735710.html
Copyright © 2020-2023  润新知