【问题标题】:how to distinguish Object type from Array type in Typescript如何在 Typescript 中区分 Object 类型和 Array 类型
【发布时间】:2017-10-27 08:08:31
【问题描述】:

如何检查对象或数组的类型?

我正在尝试将一个对象(并且仅当它是对象时才添加)添加到某个数组。

//1. should add this OBJECT to the array
var objToAdd11 : Object = {name: 'Zack', age: 24};
this.addObject(objToAdd11);

//2. should throw errorbecause this is ARRAY, and we need only OBJECTS
var objToAdd22 : Array  = [{name: 'Zack', age: 24}];
this.addObject(objToAdd22);

public  addObject(obj: any) : void {
   /*I need to check is obj parameter OBJECT OR ARRAY*/
   var myArray : Array = [1, "a", 3];

   function () {
       myArray.push(obj);
   }

   var newMyArray : Array = myArray;
}

【问题讨论】:

    标签: arrays object typescript types


    【解决方案1】:

    您可以使用 Array.isArray() 来检查它是否是一个数组,否则添加它

    var objToAdd11 : Object = {name: 'Zack', age: 24};
    this.addObject(objToAdd11);
    
    //2. should throw errorbecause this is ARRAY, and we need only OBJECTS
    var objToAdd22 : Array  = [{name: 'Zack', age: 24}];
    this.addObject(objToAdd22);
    
    if(!Array.isArray(objToAdd11)){
     //add to list
    }
    

    请查看https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray?v=example

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      您可以通过Object.keys(obj).length > 0 && obj.constructor === Object检查对象。希望能帮助到你。

      //1. should add this OBJECT to the array
      var objToAdd11: Object = {name: 'Zack', age: 24};
      this.addObject(objToAdd11);
      
      //2. should throw errorbecause this is ARRAY, and we need only OBJECTS
      var objToAdd22: Array  = [{name: 'Zack', age: 24}];
      this.addObject(objToAdd22);
      
      public  addObject(obj: any) : void {
         /*I need to check if obj parameter is OBJECT OR ARRAY*/
         var myArray: Array = [1, "a", 3];
      
         if(Object.keys(obj).length > 0 && obj.constructor === Object) {
            myArray.push(obj);
         } else {
            console.error("Obj is not an Object");
         }
      
         var newMyArray: Array = myArray;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-25
        • 1970-01-01
        • 2022-10-24
        • 2019-01-02
        • 2018-10-19
        • 1970-01-01
        • 2017-04-03
        相关资源
        最近更新 更多