用 Visual Studio 撰寫 TypeScript 一整個就很開心開心,只要好好的進行型態宣告,就可享受到跟強型別一樣的 IntelliSense 提示,實在太開心了,然後就大意了,忘記了其實骨子裡還是 JavaScript 這件事。
在取回後端的 json 資料的時候,貪圖方便就直接進行強轉型,哈哈!這裡存在不確定性,我就踩到地雷了!當然如果後端是可靠的,直接強轉型是不會有問題的。
我想都已經進行型別宣告了,難到不能自動轉型嗎?哈哈!在網路上找了很久都沒找到,找到的方式都需要二次宣定去做轉型。
簡單的展示一下這個問題,建立一個 any 的物件 a,然後強轉型成 DataModel 的物件 b,這時候 a 跟 b 其實還是同一個 Instance
interface DataModel { id: number; status: string; } let a: any = { id: '1', status: 3 }; let b: DataModel = a as DataModel;
在存取 property 時都還是 a 的資料型態,這樣在調用該型態的方法時就會出錯。
為了型態的正確必須進行轉換:
let b: DataModel = <DataModel>{ id: Number(a.id), status: String(a.status), };
0 回應:
張貼留言