有没有更好的方法来定义“包装”的JSON对象而不违反TS原则?

时间:2017-08-09 15:15:56

标签: typescript

我最近开始使用TypeScript并遇到了一个问题,如果TypeScript提供了任何功能,我很好奇。我正在接触一个Web服务,它接受以下格式的数据请求:

{
    "data": {
        "country": "US"
        "customerType": "Internal"
        "customer": "ABC"
    }
}

正如您所看到的,实际的JSON请求被“数据”对象“包装”,因此需要我定义我的类:

export class CalculatorRequest {
    data: CalculatorRequestData
}

export class CalculatorRequestData {
    country: string;
    customerType: string;
    customer: string;
}

有没有办法避免必须拥有“CalculatorRequestData”类型的辅助内部数据类?

我知道我可以制定我的请求以避免需要内部课程,但我想看看是否有更有效的选择。

谢谢!

1 个答案:

答案 0 :(得分:1)

使用通用名称只允许您创建“数据”对象,而您只需要一个“请求”对象。

export class ApiRequest<T> {
    data: T
}

export class CalculatorRequestData {
    country: string;
    customerType: string;
    customer: string;
}

// no extra request object needed, regardless of how many requests you have
export class FoooData {
    foo: string;
    bar: number;
}