一、使用環(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