【问题标题】:How to rename the typescript interface keys before sending the data to server?如何在将数据发送到服务器之前重命名打字稿界面键?
【发布时间】:2016-12-29 18:50:35
【问题描述】:

我已经实现了一个接口来保存要发送到服务器的数据。

export interface AdminRegistrationData extends User {
    password?: string;
    termsAccepted?: boolean;
}

我将输入数据正确映射到相关的passwordtermsAccepted 字段。但是在将此映射数据作为 json 字符串发送到服务器时,我希望将 termsAccepted 键更改为 terms_accepted API 端点。对于另一个 API 端点,我只想发送 password 属性。我可以通过将上述接口对象转换为 json 字符串并进行替换来实现我想要的。但我认为这是一种丑陋的方式..

所以我想听听你的意见..

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

    您可以克隆对象、添加新属性和删除旧属性:

    interface AdminRegistrationDataToSend extends User {
        password?: string;
        terms_accepted?: boolean;
    }
    
    function prepareToSendData(data: AdminRegistrationData): AdminRegistrationDataToSend {
        let clone = Object.assign({}, data) as AdminRegistrationDataToSend;
    
        clone.terms_accepted = data.termsAccepted;
        delete clone["termsAccepted"];
        return clone;
    }
    
    function prepareToSendPassword(data: AdminRegistrationData): { password: string } {
        return {
            password: data.password
        };
    }
    

    编辑

    你可以使用箭头函数:

    let prepareToSendData = (data: AdminRegistrationData): AdminRegistrationDataToSend => {
        ...
    }
    

    但我不明白这种情况的意义。

    【讨论】:

    • 需要function关键字吗?
    • 什么意思?这些是函数
    • BUt 在我的组件中有没有function关键字的函数..
    • 好吧,看看我修改后的答案,但是 function 关键字有什么问题?
    猜你喜欢
    • 2011-11-13
    • 2017-04-24
    • 2017-05-19
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多