我习惯理解一个东西,可以套用日常的生活经验,找出类比、拟人化会帮助我更好理解,今天的议题是最近看到 Type vs Interafce 看起来写法差不多,让我兴起两者有什麽不一样的疑问,所以回头去找相关资料,众所周知有位大大把TypeScript 写得很清楚又平易近人,我在阅读其中两篇帮助我了解 Type 用法,并记录心得
Day 02. 前线维护・型别推论 X 注记 - Type Inference & Annotation - iT 邦帮忙::一起帮忙解决难题,拯救 IT 人的一天
TypeScript 观念
- 什麽是TypeScript?
- 让 js 可以实现强型别特性的开发语言,并可进行型别检查,减少开发错误
- 我把它称作开发者的 贾维斯,内建强大功能提供使用,帮助你严谨的开发程序
- 为什麽我要用 TypeScript ?
- 因为 js 弱型别,让他变得得过且过,因此在不自律当开发习惯中,埋下雷,让产品运行错误
- 因为 TypeScript 型别注记功能,让他可以利用注记去检查我的变数运用是否严谨(是否心口不一,原本是 string 後来变成 boolean ),像个小管家
- 因为 TypeScript 型别注记功能,让不只我,其他的开发夥伴,看到注记就知道该怎麽正确使用这段程序码、接受督促,等於写一份注记,帮助大家降低错误
- 什麽是型别?
- 换个生活说法 “ 样子、模样 ”,用来描述任一物质的定义(ex. 纯水 - 无色透明液体)
- 只是在资料的世界,我们用不同标示来表示不同型别,就像语言一样,目的都是沟通和运用 (ex. "3" , 3 , true )
- 型别的理解,可以以描述任一物质为基础,做狭义、广义的认知(只要你觉得他是一个物质,那他就可以是一种型别)
- 原始型别:最基础存在,可以被复合应用成为新的型别(ex. "3":string //纯水 )
- 物件型别: 原始型别的复合应用,用来表示更复杂的情境 (ex. ["3","3" ]:Object //红茶)
- 明文型别:广义型别,你自己认为他是什麽,他就是什麽 (珍珠奶茶型别,牛奶、红茶、珍珠、冰块)
- 本文标示重点之理解
- 型别推论目的是即使没有注记型别,也可透过推论变数型别,作爲验证检查的基础,达成除错目的
- any 是造成型别混乱根源,是因为什麽型别都可以的特性也可以是一种型别 ( any ),但什麽都可以代表就是没有规则可以随意变动,那就跟没有使用ts 一样,因此并不能达成使用 ts 型别检查、降低错误发生之目的,随之带来混乱
- 延迟性指派,是指 只命名变数,却没有赋值行为,会让ts 自动判定为 any ,根据第二点,就会带来混乱
- 对延迟性指派,进行型别注记,为了解决 ts 发动自己型别推论的技能,让变数被注记成 any ,造成混乱,不如就在变数命名时候,就注记为指定型别,让变数受到 ts 监督验证
- 型别注记的目的,帮助开发者了解变数型别与应用方式,避免 ts 贴心自动推论 any,造成混乱