![](/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.