【问题标题】:Get the type of property of object in Angular获取Angular中对象的属性类型
【发布时间】:2019-09-19 14:13:09
【问题描述】:

我在 Angular 6 中上课

export class classXY{
  xValue: number;
  yValue: number;
  xDate: Date;
  yDate: Date;
  xName?: string;
  yName?: string;
}

在我的代码中,我需要检查具有类型编号的属性。

let obj: ClassXY;
obj.xValue=1;
obj.yValue=null;
obj.xDate= new Date();
obj.yDate= null;
obj.xName= "test";
obj.yName= null;

    for (var key in obj) {
      if ((obj[key] == null) && (typeof obj[key] === "number"))
        obj[key] = -1;
}

typeof obj["yValue"] value 为 null 而 typeof "yValue" 为 string,而我需要返回属性编号的类型。 instanceof

相同

如何检查对象属性的原始类型?

【问题讨论】:

    标签: typescript angular6 typeof


    【解决方案1】:

    TypeScript 被编译成 JavaScript,而 JavaScript 是一种动态类型语言。这意味着变量的类型可以在运行时更改,如下所示:

    let a = null;
    console.log(typeof a);
    
    a = 5;
    console.log(typeof a);
    
    a = 'hello';
    console.log(typeof a);

    在您的情况下,您的条件永远不会评估为真,因为如果 obj[key]null,那么它的类型不能是 number

    if ((obj[key] == null) && (typeof obj[key] === "number"))
    

    这是一种使用属性初始化器为类字段提供默认值的方法,以及将这些字段与构造类对象时分配的默认值进行比较的函数:

    function setDefaultValues(obj, defaultValues, valueToCheck) {
      for (const prop in obj) {
        if (defaultValues[prop] === valueToCheck && obj[prop] === null) {
          obj[prop] = valueToCheck;
        }
      }
    }
    
    class A {
      x = -1; // default value
      y = -1; // default value
      z = 'hello';
    }
    
    const a = new A();
    a.y = null; // a.y will be replaced by -1 later
    console.log(a);
    
    setDefaultValues(a, new A(), -1); // check all -1 fields on `new A()`, if null on `a`, then set to -1
    console.log(a);

    【讨论】:

    • 谢谢。我明白了,我在类中给了我所有的属性一个默认值,我使用了 defaultValue 的 typeof,如果 (typeof defaultValues[prop] === "number" && obj [prop] === null) obj[prop] = -99;
    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多