TypeScript學(xué)習(xí)筆記之二基本數(shù)據(jù)類型

一、使用環(huán)境

  • Mac 電腦
  • WebStorm
  • TypeScript3.x版本

二、需要了解的基本類型有哪些

數(shù)據(jù)類型有兩種:
A、原始數(shù)據(jù)類型 (Primitive data types)

  • boolean 布爾值
  • number 數(shù)值
  • string 字符串
  • null 空值
  • undefined 未定義
  • Symbol ES6 中的新類型

B、非原始類型

  • 數(shù)組
  • Tuple 元祖
  • enum 枚舉
  • never 永不存在的值的類型
  • void
  • any 任意類型
  • 聯(lián)合類型
  • 函數(shù)類型
  • 對(duì)象類型

三、原始數(shù)據(jù)類型

3.1 布爾類型(boolean)
  let  isSuccess : boolean = true;   // 只有true/false

注意:使用構(gòu)造函數(shù) Boolean 創(chuàng)造的對(duì)象不是布爾值,返回一個(gè)Bool對(duì)象。

 let  boolObjcet : any = new Boolean(1);  //返回bool對(duì)象
3.2 數(shù)值類型(number)
var  pricecount : number = 3.04;
var  notANumber : number = NaN;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;

注意:所有數(shù)字都是浮點(diǎn)數(shù)

3.3 文本數(shù)據(jù)類型(string)
//字符串
let  personname : string = '小名';
//多行字符串  模板字符串
let  moreString: string = `Hello, my name is ${personname} I will be good ${isSuccess}`; 
 //其中`用來(lái)定義 ES6 中的模板字符 串,${expr} 用來(lái)在模板字符串中嵌入表達(dá)式。

注意:

  • 字符串可以使用雙引號(hào)( ")或單引號(hào)(')表示;
  • 字符串模版使用(``),變量使用${變量名}
3.4 空類型 Null 和 Undefined 以及void

void 表示沒(méi)有任何類型 ,沒(méi)有函數(shù)返回值
undefined 類型的變量只能被賦值為 undefined
null 類型的變量只能被賦值為 null。
與 void 的區(qū)別是,undefined 和 null 是所有類型的子類型

 let  nul : null = null;
 let  defin : undefined = undefined;
 function message(mess : string) : void{}

但是有時(shí)候你可能會(huì)看到如下情況,是聯(lián)合類型,稍后會(huì)講解

let a : string | null | undefined  
3.5 Symbol ES6 中的新類型

symbol類型的值是通過(guò)Symbol構(gòu)造函數(shù)創(chuàng)建的
特點(diǎn)一:可選的字符串key

const symbol = Symbol("key");  // 可選的字符串key

特點(diǎn)二:字符串一樣,symbols也可以被用做對(duì)象屬性的鍵。

class ClassSymbol {
[symbol](){
    return "344";    // 
   }
}

特點(diǎn)三:Symbols是不可改變且唯一的。

let sym2 = Symbol("key");
let sym3 = Symbol("key");
sym2 === sym3; // false, symbols是唯一的

特點(diǎn)四:可以與計(jì)算出的屬性名聲明相結(jié)合來(lái)聲明對(duì)象的屬性和類成員。

 let  cc = new ClassSymbol();
console.log(cc[symbol]());

symbol成為了一種新的原生類型,就像number和string一樣

特點(diǎn)五:內(nèi)置的symbols表示語(yǔ)言內(nèi)部的行為

  Symbol.hasInstance方法,會(huì)被instanceof運(yùn)算符調(diào)用。
   構(gòu)造器對(duì)象用來(lái)識(shí)別一個(gè)對(duì)象是否是其實(shí)例。
  Symbol.isConcatSpreadable布爾值,
  表示當(dāng)在一個(gè)對(duì)象上調(diào)用Array.prototype.concat時(shí),這個(gè)對(duì)象的數(shù)組元素是否可展開(kāi)。
  Symbol.iterator方法,被for-of語(yǔ)句調(diào)用。返回對(duì)象的默認(rèn)迭代器。
  Symbol.match方法,被String.prototype.match調(diào)用。正則表達(dá)式用來(lái)匹配字符串。
  Symbol.replace方法,被String.prototype.replace調(diào)用。正則表達(dá)式用來(lái)替換字符串中匹配的子串。
  Symbol.search方法,被String.prototype.search調(diào)用。正則表達(dá)式返回被匹配部分在字符串中的索引。
  Symbol.species函數(shù)值,為一個(gè)構(gòu)造函數(shù)。用來(lái)創(chuàng)建派生對(duì)象。
  Symbol.split方法,被String.prototype.split調(diào)用。正則表達(dá)式來(lái)用分割字符串。
  Symbol.toPrimitive方法,被ToPrimitive抽象操作調(diào)用。把對(duì)象轉(zhuǎn)換為相應(yīng)的原始值。
  Symbol.toStringTag方法,被內(nèi)置方法Object.prototype.toString調(diào)用。返回創(chuàng)建對(duì)象時(shí)默認(rèn)的字符串描述
  Symbol.unscopables對(duì)象,它自己擁有的屬性會(huì)被with作用域排除在外。

     如需了解更多知識(shí)

TypeScript學(xué)習(xí)筆記之五類(Class)
TypeScript學(xué)習(xí)筆記之四接口(Inferfaces)
TypeScript學(xué)習(xí)筆記之三非原始數(shù)據(jù)類型
TypeScript學(xué)習(xí)筆記之二基本數(shù)據(jù)類型
TypeScript學(xué)習(xí)筆記之一初見(jiàn)TypeScript

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

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

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