安全地转换任何'对象符合TypeScript接口

时间:2017-04-25 23:27:50

标签: json typescript

我想以正确的方式将any类型的对象转换为符合特定界面的对象,如果没有必要,请ApiResponse进行适当的错误处理它成为那个对象的属性。类型any的对象来自JSON有效负载,来自JSON.parse或等效。理想情况下,我也会喜欢处理此转换的正确错误处理。我提出了以下方法,但不确定它是否正确使用TypeScript或利用最佳模式。

1 个答案:

答案 0 :(得分:-1)

`

export interface ApiResponse {

    code: number 
    type: string 
    message: string 

}



export function readApiResponse(json: any): ApiResponse {

    if (!json.hasOwnProperty('code')) {
        throw 'No code property'
    }

    if (!json.hasOwnProperty('type')) {
        throw 'No type property'
    }

    if (!json.hasOwnProperty('message')) {
        throw 'No message property'
    }

    return json
}


loadData() {
        fetch("data.json")
            .then(response => response.json()) 
            .then( (json: any) => {

                console.log(json)

                let r = readApiResponse(json)

                console.log(r)

                this.setState( {message : r.message })

            })
            .catch ( (error) => {
                console.log(error)
            })

    }

`