【问题标题】:Way to differ TypeScript object type from class type区分 TypeScript 对象类型和类类型的方法
【发布时间】:2020-02-19 02:07:03
【问题描述】:

让我们在 typescript 中定义类:

class User {
  public id: number;
  public name: string;
  public toString(): string{
    return name + id;
  }
}

如何区分 TypeScript 中的类和普通对象?

const user1: User = new User();
const user2: User = {id: 1, name: 'John'};

这两者在 TypeScript 中都是有效的,但 user1 是类实例,user2 是对象。

我之所以这么问,是因为我遇到了 TypeORM 包的问题,​​我在其中混合了对象和实体实例,它开始变得非常混乱,我并不总是确定我是否有类实例或对象。

【问题讨论】:

  • @DawoodValeed yu 的意思是将对象转换为类实例对吗? :D
  • 是的,它工作正常,因为对象被转换为类实例:D

标签: typescript class object typeorm


【解决方案1】:

回答:

如何区分 TypeScript 中的类和普通对象?

可以使用instanceof来区分两者:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof

例如,user1 instanceof User 应该为 true,但对于 user2 则不正确。

【讨论】:

    【解决方案2】:

    方法一:

    您可以使用instanceof User 来检查它是否是该类的实例。

    方法二:

    我使用class-transformer 来处理这种情况,在将数据发送到存储库之前使用plainToClass 方法将实例转换为类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-27
      • 2023-04-01
      • 2013-12-12
      • 1970-01-01
      • 2020-07-03
      • 2018-12-15
      • 1970-01-01
      • 2020-07-16
      相关资源
      最近更新 更多