![](/img/trans.png)
[英]Will Object.keys(myObject).forEach() execute synchronously?
[英]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
的實例中使用它時,就強制使用那些預定義的類型。
這節課:
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.