typescript - 获取 Angular 中对象的属性类型

标签 typescript angular6 typeof

我有 Angular 6 类(class)

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

在我的代码中,我需要检查类型为 number 的属性。

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 被编译为 JavaScript,而 JavaScript 是一种动态类型语言。这意味着变量的类型可以在运行时更改,如下所示:

let a = null;
console.log(typeof a);

a = 5;
console.log(typeof a);

a = 'hello';
console.log(typeof a);

就您而言,您的条件永远不会计算为 true,因为如果 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);

关于typescript - 获取 Angular 中对象的属性类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55929016/

相关文章:

reactjs - 将 Typescript 接口(interface)属性传递给子组件返回不存在的属性

typescript - 找不到 NgbModalBackdrop 的组件工厂。您是否将其添加到@NgModule.entryComponents?即使我将 EnteryComponent 添加到我的模块中

angular6 - (角度6)路线转换动画不适用于子路线

c++ - 如何获取变量的类型?

javascript - 带两个参数的回调 ES6 箭头函数 Angular2

angular - ng2-charts + 如何自定义X轴标签的位置?

javascript - 动态地需要一个 child 下的 child

angular - 从 Angular 5 升级到 6 后 : Error: Uncaught (in promise): TypeError: undefined is not a function

javascript - 在 javascript 中真的有一个很好的理由从不检查 boolean true || false 例如 if(var){}else{}?

c# - 什么时候类型不是类型?错误 : 'is a type, which is not valid in the given context'