年05月27日日更/天
01.在我的工作中,前端使用TypeScript,后端使用PHP。PHP不是一种强类型的语言,或者,我们后端工程师不使用类型编程,在PHP里也是合法的。
02.这样从后端返回的JSON数据,类型就是一个黑盒,或者,他们都是字符串。前端与之交互,很可能有各种各样的问题。所有值都可能是可选的,明明该是一个对象,却是个字符串。
03.心里的苦,找不到解决方案。今天,我找到了一个可行的方案。看一下这样的代码:
classCat{meow(){/***/}}classDog{bark(){/***/}}functionserializeCat(cat:Cat):string{return"c"+JSON.stringify(cat);}functionserializeDog(dog:Dog):string{return"d"+JSON.stringify(dog);}functiontryDeserializeCat(from:string):Cat
undefined{if(from[0]!="c")returnundefined;returnCatObject.assign(newCat(),JSON.parse(from.substring(1)));}
04.重点看JSON反序列那一句。使用了Object.assign(),反序列之后和newCat()对象合并,这样,我们最后就可以得到一个合法的Cat实例,这个对象里面的属性,我们就可以定义好各种预期的类型。
05.这样使用接口数据,应该不会出现各种基础性报错了吧?
我是,坚持输出技术、副业和生活感悟,欢迎