Day2-JavaScript(JS)与TypeScript(TS)的差异比较

第二天,我们来谈谈JavaScript(JS)与TypeScript(TS)的比较吧!

使用JavaScript(JS)遇到的问题

  1. 动态型别 (Dynamic Typed)
  2. 弱型别 (Weakly Typed)
  3. 大型应用程序难以除错
  4. 继承语法特殊

1.动态型别 (Dynamic Typed)

动态型别可以随时转换变数的型别
因此若是在开发或在维护管理上不多加注意的话,
很容易发生错误。

如下范例

    var i = 10 ;
    i = "100" ; //success

一开始宣告变数i为数字10,
之後若是转变为字串"100",在JS上也是可以被允许的喔!

JS为动态型别可以随时转换变数的型别

2.弱型别 (Weakly Typed)

弱型别在执行阶段才会发生错误
即使有开发工具的辅助,
也在开发阶段很难发现问题所在。

如下范例

    var i = 10 + "100"  ; //success

在弱型别下不同型别相加是可以被允许的,
因此即使传入的型别有误也无法及时发现,
直到执行阶段才能再去做找错除错的程序。

JS为弱型别在执行阶段才会发生错误

3.大型应用程序难以除错

总和JS的动态型别与弱型别的特性,
很容易造成应用程序难以除错
想当然尔,越大型的专案也就越难找出并去除错误。

4.继承语法特殊

JS的继承语法特殊,而且不像物件导向程序语言,
若要使用,也是要再做些研究的。

使用TypeScript(TS)的好处

  1. 简单学习
  2. 型别安全机机制
  3. 目标环境执行JS(非TS)

简单学习

对於已经会JS的人来说,是不需要学习新的程序语言,
因为TS只是将一些新的特性加到JS上而已,
但若是要活用TS的话,学习还是必要的呢!

另外也因此使移植变得容易,
若要将JS档案移植为TS档案的话,
只需要将副档名 .js 变更名称为 .ts
一样是可以运作不会坏掉的喔。

型别安全机机制

TypeScript顾名思义就是着重在型别(Type)上,以型别为主要优势。
TS提供型别安全机制,
可以解决上述JS遇到的问题,

因为相对的TS拥有静态型别强行别的特性,

静态型别 (Static Typed)

不容许转换变数的型别

    number i = 10 ;
    i = "100" ;//error 

    var i = 10 ;
    i = "100" ;//error 以推论型别
强行别 (Strongly Typed)

不容许转换变数的型别

    var i = 10 + "100"  ; //error
JS TS
动态型别 静态型别
弱型别 强型别

因此,更能在开发阶段可即早发现问题,
不需要等到执行阶段才发现问题,
对於型别上的错误可以更有效率的发现与除错。

在维护上也是会变得更加方便,降低维护成本。
但凡事都是一体两面,因为多了型别上的管制,在开发上势必会多出一些开发成本。

目标环境执行JS(非TS)

目标环境真正执行的是TS撰写完转译成的JS
因此,即使TS撰写错误,也会正常转译成JS,
而目标环境不会直接坏掉,
因为JS才是真正在运作的程序码

今日结语

最後,希望大家对於两者的优缺差异已经大致了解了,
总而言之,型别就是TypeScript(TS)最大的重点!
(想学习的TS的朋友抓好了)


<<:  【第三天 - Flutter Route 规划分享】

>>:  [素食吃到饱 vegetarian food] 天菜丰巢 VeGood 蔬食百汇(台中-文心秀泰)半自助晚餐 SHOWTIME LIVE TAICHUNG WENXIN STORE

Day 26:v-if 才做选择,v-show 全都秀

目前的版面配置是基本的瀑布流效果,而此模式较着重在显示书本封面图片,一列只能出现三本书单,RWD 的...

C# 入门之字典

今天我们将来一起看一下 C# 中的另外一种数据类型:字典。 字典,是一组 key 和 value 的...

【Day 19】Algorithm - Practice 1

题目 xLimit = n; yLimit = m; population = pij:坐落在(i,...

全端入门Day28_後端程序撰写之一点的Golang

昨天Go弄出了Hello World,今天就来解释怎麽写的。 Golang入门一点 先贴上昨天写的程...

Progressive Web App 透过系统分享内容: Web Share API & Web Share Target (17)

什麽是 Web Share API Web App 透过 Web Share API 就能够使用系统...