如何写精华回答,获更多曝光?
发布
定义的A类型的b属性为number,但是在JSON.parse + as 之后可以赋值为任何类型,这样对于a:A 的b属性操作就不预计了
interface A { a:number, b:number, c?:string } let a:A={ a:1, b:2, } let d = JSON.parse(’{“a”:1,“b”:“2”,“d”:[“a”,“b”]}’) as A let e = d.b + 1; console.log(“e=”,String(e)) // “21” console.log(JSON.stringify(d))
let h = JSON.parse(’{“a”:1,“b”:“ab”,“d”:[“a”,“b”]}’) as A let i = h.b / 1; console.log(“i=”,String(i)) // NaN console.log(JSON.stringify(h))
// 输出结果 e= “21” {“a”:1,“b”:“2”,“d”:[“a”,“b”]} i= NaN {“a”:1,“b”:“ab”,“d”:[“a”,“b”]}
这样对属性b的操作就无法保证结果了,是否有办法对JSON.parse 做一个通用的类型检查转换。