初識TypeScript

typescript.png

這張圖來自 TypeScript 官網(wǎng)
提到了說 TypeScript 是 JavaScript 的超集!
它有自己的靜態(tài)類型
并且他不能直接被瀏覽器運行,需要編譯為 JavaScript 之后才能運行。

所以選擇學(xué)習(xí) TypeScript 的話呢 要有 JavaScript 的基礎(chǔ)就可以更快速的入門了!

TS與JS相比較的一些小優(yōu)勢:
1.TS在開發(fā)過程中,可以更早的在編輯器中就發(fā)現(xiàn)潛在的問題,而JS得在瀏覽器中運行之后才會暴露錯誤;
2.TS擁有更友好的編輯器自動提示;
3.TS代碼語義更清晰易懂

TS中的靜態(tài)類型分為兩種,一種基礎(chǔ)類型,一種是對象類型
類似于JS中的基礎(chǔ)類型和引用類型

先來看幾個基礎(chǔ)類型:

const myName: string = 'Dell'
const myAge: number = 18
const r: boolean = true
const n: null = null
const s: symbol = Symbol('s')
const u: undefined = undefined

再來看看對象類型:

const teacher: {
  name: string
  age: number
} = {
  name: 'Dell',
  age: 18
}

const ages: () => number = () => {
  return 18
}

const arr: number[] = [1, 2, 2]

可以這樣理解上邊的代碼 ------ const 變量名稱:變量類型 = 值

如果你自己去手動寫呢,你會發(fā)現(xiàn)它的代碼提示非常的強大,可以幫助你更快的進行開發(fā)!

接下來看看 type annotation 類型注解 與 type inference 類型推斷
感覺如果TS聲明變量需要像上方兩段代碼那樣來寫,那就太麻煩了,
其實呢 商法的寫法都是類型注解,就是我們主動告訴TS聲明的變量是什么類型,
但是實際我們不需要這么麻煩,因為TS可以自己去做類型推斷

const myName: string = 'Dell'
const myAge: number = 18
// 上方兩個變量完全不需要 類型注解 因為他們的值會被TS識別 ,繼而推斷出來他們是什么類型的變量

上方的代碼完全可以像在JS中的寫法一樣去聲明變量,這就是類型注解和類型推斷,

下方的情況,就需要用到類型注解了

function getTotal(one, two) {
  return one + two
}
const total = getTotal(1, 2)  

上方的這段代碼 total 是什么類型呢?
它不確定是什么類型,因為傳參可能是任何類型的數(shù)據(jù)
在TS無法推斷類型的時候,我們可以為它進行類型注解

function getTotal(one: number, two: number) {
  return one + two
}
const total = getTotal(1, 2)  

這樣我們聲明了入?yún)?number 下方的 total 也就不需要類型注解了 ,TS可以推斷出來 total 也一定為 number 類型!

這就是 類型注解 與 類型推斷 。

但是呢,在我們實際項目中,我們很多時候還是會對函數(shù)進行 類型注解,

function getTotal(one: number, two: number){
  return one + two + ''
}
const total = getTotal(1, 2)  

假如我期望此函數(shù)返回的是 number 類型,但是由于我疏忽大意 寫成了 return one + two + '' ,但是卻不會報錯
因為此時 TS類型推斷 total 是一個 string 類型, 所以代碼并不會報錯,所以我們需要對函數(shù)返回值也進行類型注解,
以解決不必要的麻煩

function getTotal(one: number, two: number):number{
  return one + two
}
const total = getTotal(1, 2)  

此時 total 就一定是 number 類型了,如果我手誤寫錯了 return one + two + '' ,代碼將會提示我,便可快速定位到問題


image.png

不知道怎么結(jié)束了!既然寫到這里了,那就繼續(xù)再寫點吧

和JS相同的數(shù)據(jù)類型就不說了,這里介紹兩種TS函數(shù)返回的兩種類型 void 和 never 兩種
void 代表此函數(shù)沒有 return 值 ,如果此函數(shù)有返回值 則報錯


image.png

never類型,這個根據(jù)TS官方文檔來看呢不太好理解,我的理解就是永遠執(zhí)行不到最后的函數(shù)

function err (): never {
  throw new Error()
  console.log(123)
}

err()

這就沒有問題,這個函數(shù)返回值的類型就是一個 never 的類型
如果可以走到終點的函數(shù) , 則會報錯


image.png

上方可以執(zhí)行完的函數(shù)返回值聲明為 never ,則會報錯

既然說到函數(shù)了,那就再說一下解構(gòu)的參數(shù)如何類型注解,首先看一下錯誤的注解方式


image.png

直接來看看正確的解構(gòu)參數(shù)如何類型注解吧,很簡單 ,一看就會

function getTotal ({ one, two }: { one: number; two: number }): number {
  return one + two
}

const total = getTotal({ one: 1, two: 2 })

就這么多,下次再寫 886

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • TypeScript是一種由微軟開發(fā)的支持ES6標(biāo)準(zhǔn)的編程語言,它是Angular2的開發(fā)語言。它可以編譯成純Ja...
    巧克力_404閱讀 850評論 0 0
  • TypeScript 是 JavaScript 的超集,由微軟公司在 2012 年正式發(fā)布。 環(huán)境搭建: npm ...
    戊戌水瓶閱讀 193評論 0 1
  • 目前typescript已經(jīng)是前端的一個加分項; 微軟發(fā)明的TypeScript,JavaScript是網(wǎng)景公司發(fā)...
    MrTon_1965閱讀 772評論 0 0
  • 誕生背景 起源于使用JavaScript開發(fā)的大型項目 。由于JavaScript語言本身的局限性,難以勝任和維護...
    波_0903閱讀 311評論 0 0
  • 初識 ts ts與js的不同 ts相比js 首先是ts在聲明時需要聲明類型注解變量的聲明: 數(shù)組的聲明: 對象的聲...
    人在胖天在看_640c閱讀 417評論 0 0

友情鏈接更多精彩內(nèi)容