iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
自我挑戰組

日常任務成長紀錄系列 第 24

TypeScript | Type 研究心得紀錄 1

  • 分享至 

  • xImage
  •  

我習慣理解一個東西,可以套用日常的生活經驗,找出類比、擬人化會幫助我更好理解,今天的議題是最近看到 Type vs Interafce 看起來寫法差不多,讓我興起兩者有什麼不一樣的疑問,所以回頭去找相關資料,眾所周知有位大大把TypeScript 寫得很清楚又平易近人,我在閱讀其中兩篇幫助我了解 Type 用法,並記錄心得

Day 02. 前線維護・型別推論 X 註記 - Type Inference & Annotation - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天

TypeScript 觀念

  1. 什麼是TypeScript?
    1. 讓 js 可以實現強型別特性的開發語言,並可進行型別檢查,減少開發錯誤
    2. 我把它稱作開發者的 賈維斯,內建強大功能提供使用,幫助你嚴謹的開發程式
  2. 為什麼我要用 TypeScript ?
    1. 因為 js 弱型別,讓他變得得過且過,因此在不自律當開發習慣中,埋下雷,讓產品運行錯誤
    2. 因為 TypeScript 型別註記功能,讓他可以利用註記去檢查我的變數運用是否嚴謹(是否心口不一,原本是 string 後來變成 boolean ),像個小管家
    3. 因為 TypeScript 型別註記功能,讓不只我,其他的開發夥伴,看到註記就知道該怎麼正確使用這段程式碼、接受督促,等於寫一份註記,幫助大家降低錯誤
  3. 什麼是型別?
    1. 換個生活說法 “ 樣子、模樣 ”,用來描述任一物質的定義(ex. 純水 - 無色透明液體)
    2. 只是在資料的世界,我們用不同標示來表示不同型別,就像語言一樣,目的都是溝通和運用 (ex. "3" , 3 , true )
    3. 型別的理解,可以以描述任一物質為基礎,做狹義、廣義的認知(只要你覺得他是一個物質,那他就可以是一種型別)
    4. 原始型別:最基礎存在,可以被複合應用成為新的型別(ex. "3":string //純水 )
    5. 物件型別: 原始型別的複合應用,用來表示更複雜的情境 (ex. ["3","3" ]:Object //紅茶)
    6. 明文型別:廣義型別,你自己認為他是什麼,他就是什麼 (珍珠奶茶型別,牛奶、紅茶、珍珠、冰塊)
  4. 本文標示重點之理解
    1. 型別推論目的是即使沒有註記型別,也可透過推論變數型別,作爲驗證檢查的基礎,達成除錯目的
    2. any 是造成型別混亂根源,是因為什麼型別都可以的特性也可以是一種型別 ( any ),但什麼都可以代表就是沒有規則可以隨意變動,那就跟沒有使用ts 一樣,因此並不能達成使用 ts 型別檢查、降低錯誤發生之目的,隨之帶來混亂
    3. 延遲性指派,是指 只命名變數,卻沒有賦值行為,會讓ts 自動判定為 any ,根據第二點,就會帶來混亂
    4. 對延遲性指派,進行型別註記,為了解決 ts 發動自己型別推論的技能,讓變數被註記成 any ,造成混亂,不如就在變數命名時候,就註記為指定型別,讓變數受到 ts 監督驗證
    5. 型別註記的目的,幫助開發者了解變數型別與應用方式,避免 ts 貼心自動推論 any,造成混亂

上一篇
練習嚴謹
下一篇
TypeScript | Type 研究心得紀錄 2
系列文
日常任務成長紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言