用 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 回應:
張貼留言