gpt4 book ai didi

javascript - 在 TypeScript 中凝胶化一个类的所有模型属性

转载 作者:搜寻专家 更新时间:2023-10-30 21:53:18 25 4
gpt4 key购买 nike

我有以下 TypeScript 类:

export class City {
name: string;
fullName: string;
country: string;
countryCode: string;
center: GeoPoint;
}

我需要一种在运行时获取所有模型属性的方法。例如:

static init(obj): City {

let city = new City();

for (var i in obj) {
if (i == "exists in City model") {
city[i] = obj[i];
}
}
}

在 TypeScript 中是否有一种简单的方法可以做到这一点?我不想被要求维护所有模型属性名称的数组来检查这一点。

最佳答案

如果您在 TypeScript Playground 上检查 TypeScript 编译器生成的输出它不会设置任何没有默认值的类属性。因此,一种可能的方法是使用 null 初始化所有这些:

export class City {
name: string = null;
fullName: string = null;
country: string = null;
countryCode: string = null;
center: string = null;

...
}

然后检查对象属性是否存在于对象上:typeof。您更新的代码:

export class City {
name: string = null;
fullName: string = null;
country: string = null;
countryCode: string = null;
center: string = null;

static init(obj): City {

let city = new City();

for (var i in obj) {
if (typeof(obj[i]) !== 'undefined') {
city[i] = obj[i];
}
}
return city
}
}

var c = City.init({
name: 'aaa',
country: 'bbb',
});

console.log(c);

使用node编译和运行时打印输出:

City {
name: 'aaa',
fullName: null,
country: 'bbb',
countryCode: null,
center: null
}

关于javascript - 在 TypeScript 中凝胶化一个类的所有模型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37495168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com