【認真臉】TypeScript 不是強類型!只是靜態類型!
01-30
RT。。
鑒於現在很多人都沒有對類型系統形成正確理解還是稍微提醒一下。。(弱類型、強類型、動態類型、靜態類型語言的區別是什麼? - C(編程語言) - 知乎)
不知道還有沒有人不理解強/弱類型和有沒有類型標註是沒有因果性的兩件事。。
簡單證明
因為 TypeScript 是 JavaScript 的超集
所以 TypeScript 需要允許原有的 JavaScript 中允許的操作
所以 TypeScript 中仍然可以出現 JavaScript 中能夠出現的 Forbidden behaviors
又因為 JavaScript 是弱類型
所以 TypeScript 是弱類型
證畢
當然其實這個證明並不是太嚴謹,理解意思就行。。
一點提示
TypeScript 只是提前了類型檢查的時機,並沒有讓類型系統本身變得更嚴格。
一個很直接的栗子就是類型間的基本運算:
TypeScript 幾乎不限制 JavaScript 中原有的隱式類型轉換,只是能夠通過類型推導在編譯時確定結果。
BTW,tsc 的編譯器選項只是創造出了 TypeScript 的某個特定子集,並不改變語言本身(全集)的性質。
最後
強/弱類型的界定本身就留有爭議,而且其概念現在已經被大量誤用。如果不是專門強調的話,一般只說明某個語言是靜態/動態類型就足夠了,盡量慎用強/弱類型的概念。
推薦閱讀:
※第3篇:「來啊,造作吧,反正有大把的內存」
※宏名不能隨便起
※增長黑客們都在使用什麼編程語言?
※Python 2 系列壽命還剩幾年?
※王垠:如何掌握所有的程序語言
TAG:TypeScript | 编程语言 |