【发布时间】:2017-01-13 02:12:35
【问题描述】:
我正在使用一个库,该库提供 typescript 接口,所有成员都是可选的,没有构造函数,如下所示:
export interface ExampleDto {
a?: string;
b?: string;
}
尝试以通常的方式循环成员无济于事(因为对象没有成员,因为它们是可选的):
let ex: ExampleDto = {};
for(let m in ex) {
console.log(m);
}
如何循环通过 ExampleDto 并查看“a”和“b”,而不必构造一个包含所有成员集的实际 ExampleDto?其中一些接口有很多成员。我不在乎价值。我只想遍历可选的成员名称。
根据 Meirion Hughes 的解释提出了以下修复方法。 每个接口都是通过 Swagger 动态生成的,所以我添加了一个 empty() 函数来创建一个完全填充的对象。我走这条路是为了避免破坏图书馆的其他用户:
export interface ExampleDto {
a?: string;
b?: string;
}
export namespace ExampleDto {
export function empty(): ExampleDto {
return {
a: null,
b: null,
}
}
}
更新 2: Typescript 2.1 提供了“keyof”,它产生了允许的属性名称的类型。 详情在这里: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-1.html
【问题讨论】:
标签: angular typescript