Object.keys(myObject)不返回typescript中的类属性

问题描述 投票:1回答:1

为什么:

let provider = new Provider();
var keys = Object.keys(provider);
console.log(keys);

返回一个空数组,时间:

let provider = { Name: '', Surname: '' };
var keys = Object.keys(provider);
console.log(keys);

返回一个包含2个属性的数组?

这是我的Provider.ts

export class Provider {
  public Id: string;
  public Name: string;
  public FriendlyName: string;
  public CompanyRegistrationNumber: string;
  public VatRegistrationNumber: string;
  public TfgUniqueReferenceNumber: string;
  public Since: Date;
  public Until: Date;
  public DefaultBillingDay: number;
  public DefaultProvisioningDay: number;
  public AllowsToProvisionProRata: boolean;
  public AllowsToBillProRata: boolean;
  public EmailAddress: string;
  public DateCreated: Date;
  public DateModified: Date;
  public UserCreated: string;
  public UserModified: string;
  public IsRetired: boolean;
  public ImageUrl: string;
  public ContactNumber1: ContactNumber;
  public ContactNumber2: ContactNumber;
  public PhysicalAddress: Address;
  public PostalAddress: Address;
  public FinancialSystemAccount: FinancialSystemAccount;
  public WholesaleProducts: Array<WholesaleProduct>;
  public ContactPeople: Array<ContactPerson>;
  public Batches: Array<Batch>;
  public BatchCandidates: Array<BatchCandidate>;
  public AllowableBatchTypes: Array<BatchType>;
}
javascript angular typescript
1个回答
3
投票

除非您初始化属性,否则它们实际上并未创建。您可以检查trasnpiled Provider.js文件并进行验证。这只是一种告诉编译器的方法,每当我们在Provider的实例中使用它时,强制执行这些预定义类型。

Typescript Playground上测试它

这个班,

class Provider {
  public Id: string;
  public Name: string;
  public FriendlyName: string;
  public CompanyRegistrationNumber: string;
  public VatRegistrationNumber: string;
  public TfgUniqueReferenceNumber: string;
  public InitializedProp: string = '';
}

获取转换为:

var Provider = (function () {
    function Provider() {
        this.InitializedProp = '';
    }
    return Provider;
}());

您可以看到只有InitializedProp被创建为trasnpiled构造函数中的属性。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.