TS學習隨筆(一)->安裝和基本數據類型

去年學過一段時間的TS,但因爲在工做中不經常使用。就生疏了,最近項目要求用TS,那我就再回去搞搞TS,寫一篇記錄一下本身學習TS的進度以及TS知識點git

 首先,關於TS的定義我就不在這描述了,想看百度一下你就知道,咱們直接來看怎麼用就完事了github

安裝:typescript

npm install -g typescript

 這個命令要是一直下載不下來,請使用yarn試試,或者將源指向淘寶,用cnpm都同樣npm

以上命令會在全局環境下安裝 tsc 命令,安裝完成以後,咱們就能夠在任何地方執行 tsc 命令了。json

編譯一個 TypeScript 文件:函數

tsc hello.ts

咱們約定使用 TypeScript 編寫的文件以 .ts 爲後綴,用 TypeScript 編寫 React 時,以 .tsx 爲後綴。學習

 

檢查:spa

  TypeScript 只會進行靜態檢查,若是發現有錯誤,編譯的時候就會報錯。但即便報錯,相應的JS文件仍是被編譯出來code

  若是要在報錯的時候終止 js 文件的生成,能夠在 tsconfig.json 中配置 noEmitOnError 便可對象

 

TS基礎:

  原始數據類型,跟JS如出一轍,沒啥變化,只不過使用的用法變了

    來,給看官們展現展現

  布爾值:

    let isDone:boolean = false

    能夠看到咱們在變量名後面加了一個:boolean來標識idDone這個變量類型是布爾類型,

    注意:

      使用new Boolean() 返回的是一個 Boolean 對象,而不是boolean類型

      可是直接調用 Boolean 能夠返回一個 boolean 類型

 

  數值:

    使用number裏定義數值類型

let decLiteral: number = 6; let hexLiteral: number = 0xf00d; // ES6 中的二進制表示法
let binaryLiteral: number = 0b1010; // ES6 中的八進制表示法
let octalLiteral: number = 0o744; let notANumber: number = NaN; let infinityNumber: number = Infinity;

     編譯結果:

var decLiteral = 6; var hexLiteral = 0xf00d; // ES6 中的二進制表示法
var binaryLiteral = 10; // ES6 中的八進制表示法
var octalLiteral = 484; var notANumber = NaN; var infinityNumber = Infinity;

      注意:TS裏面寫六進制,八進制會被編譯成十進制

 

  字符串:

    使用 string 定義字符串類型:

let myName: string = 'Tom';

  

  空值:

    js裏面沒有空值void的概念,在ts裏能夠用 void 表示沒有任何返回值的函數:

function alertName(): void { alert('My name is Tom'); }

  

  Null 和 Undefined

    在 TypeScript 中,可使用 null 和 undefined 來定義這兩個原始數據類型:

let u: undefined = undefined; let n: null = null;

    注意:undefined 類型的變量只能被賦值爲 undefinednull 類型的變量只能被賦值爲 null

    與 void 的區別是,undefined 和 null 是全部類型的子類型。也就是說 undefined 類型的變量,能夠賦值給 number 類型的變量:

// 這樣不會報錯 let num: number = undefined;
// 這樣也不會報錯
let u: undefined; let num: number = u;

    而 void 類型的變量不能賦值給 number 類型的變量:

let u: void; let num: number = u; // index.ts(2,5): error TS2322: Type 'void' is not assignable to type 'number'.

 

  Any:

    any容許賦值爲任意類型,若是是一個普通類型,在賦值過程當中改變類型是不被容許的:

let myFavoriteNumber: string = 'seven'; myFavoriteNumber = 7; // index.ts(2,1): error TS2322: Type 'number' is not assignable to type 'string'.

    但若是是 any 類型,則容許被賦值爲任意類型。  

let myFavoriteNumber: any = 'seven'; myFavoriteNumber = 7;

    在任意值上訪問任何屬性都是容許的:

let anyThing: any = 'hello'; console.log(anyThing.myName); console.log(anyThing.myName.firstName);
let anyThing: any = 'Tom'; anyThing.setName('Jerry'); anyThing.setName('Jerry').sayHello(); anyThing.myName.setFirstName('Cat');

    能夠認爲,聲明一個變量爲任意值以後,對它的任何操做,返回的內容的類型都是任意值。

    變量若是在聲明的時候,未指定其類型,那麼它會被識別爲任意值類型:

let something; something = 'seven'; something = 7;

    等同於:

let something: any; something = 'seven'; something = 7;

 原文參考自:https://github.com/xcatliu/typescript-tutorial/blob/master/basics/union-types.md

相關文章
相關標籤/搜索