簡體   English   中英

Object.keys(myObject) 不會在打字稿中返回類的屬性

[英]Object.keys(myObject) does not return properties of class in typescript

為什么:

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>;
}

除非您初始化屬性,否則實際上不會創建它們。 您可以檢查 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被創建為轉譯的構造函數中的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM