如何获取类的所有属性名称并将它们用作 TypeScript 中的静态变量?

问题描述 投票:0回答:1

在我使用 TypeScript 的项目中,我有一个类似的类

class Car {
    model: string;
    year: number;
    price: string;

    constructor(model: string, year: number, price: string) {
        this.model = model;
        this.number = number;
        this.price = price;
    }
}

我必须从 json 文件读取数据。首先,我需要检查文件中的数据是否具有与 Car 类相同的属性。 我不想哈希代码

fileData.hasOwnProperty('model')
。我的想法和
fileData.hasOwnProperty(Car.model)
类似。我想将类属性设置为 Car 类的静态推荐属性。

我希望能够以返回属性名称或类似信息的方式引用类中的任何属性,例如 Car.model、Car.year 或 Car.price...。

你对此有什么想法吗?

非常感谢你

我尝试了如下。但我认为这不是一个好主意。因为以后如果我添加更多5个属性,我还必须添加5个相应的方法。在这种情况下我不想添加更多方法。

class Car { model: string; year: number; price: string; constructor(model: string, year: number, price: string) { this.model = model; this.number = number; this.price = price; } static model() { return 'model'; } static year() { return 'year'; } static price() { return 'price'; } }
我也尝试如下。但是当我想调用Car.properties.model时它没有推荐属性名称

class Car { model: string; year: number; price: string; constructor(model: string, year: number, price: string) { this.model = model; this.number = number; this.price = price; } static properties() { return Object.getOwnPropertyNames(Car).map((property) => { property }); } }
    
typescript class properties recommendation-engine hasownproperty
1个回答
0
投票
只需在静态字段中写入数组文字即可:

class Car { model: string; year: number; price: string; constructor(model: string, year: number, price: string) { this.model = model; this.number = number; this.price = price; } static properties = ['model', 'number', 'price'] satisfies (keyof Car)[]; }
    
© www.soinside.com 2019 - 2024. All rights reserved.