🌲☔️JS/TS 數據類型(基本數據類型-引用數據類型)

其安易持,其未兆易謀;javascript

其脆易泮,其微易散。 爲之於未有,治之於未亂。 合抱之木,生於毫末; 九層之臺,起於壘土; 千里之行,始於足下。 爲者敗之,執者失之。 是以聖人無爲故無敗,無執故無失。 民之從事,常於幾成而敗之。 慎終如始,則無敗事。 是以聖人慾不欲,不貴可貴之貨; 學不學,復衆人之所過。 以輔萬物之天然而不敢爲。 --- 《道德經》 第六十四章。java

JS/TS 基本數據類型 primitive data type

  1. 布爾類型
  2. 字符串類型
  3. 數字類型
  4. null
  5. undefined
  6. es6 的 Symbol 數據類型

布爾類型: Boolean

喬治·布爾(George Boole,1815.11.2~1864),1815年11月2日生於英格蘭的林肯。 19世紀最重要的數學家之一,出版了《邏輯的數學分析》 ,這是它對符號邏輯諸多貢獻中的第一次。1854年,他出版了《思惟規律的研究》 ,這是他最著名的著做。在這本書中布爾介紹瞭如今以他的名字命名的布爾代數。es6

// js
let bool = false;
let boolr = true;

// ts
let boolts: boolean = false;
let boolrts: boolean = true複製代碼

布爾包裝類型:數組

包裝類型是經過構造函數建立,本事一個包裝了基本類型的對象。markdown

let boolWrap = new Boolean(fasle);
複製代碼

字符串類型

Character string:字符串或串(String)是由數字、字母、下劃線組成的一串字符。函數

// js
let str = 'this is string';

// ts
let strTs: string = 'this is ts string';
複製代碼

字符串包裝類型ui

let strWrap = new String(false)
複製代碼

字符串包裝類型的本質是一個包裝了字符串的對象。this

數字類型

數字類型用於表示數量值,用於計算spa

let a = 123;

// ts
let b: number = 123;
複製代碼

數字包裝類型:code

let num = new Number(123)
複製代碼

字符串包裝類型是一個對象,包裝了 number 類型。

null

Null 類型通常表示是清空,什麼都沒有。

// js
let xi = null;

// ts
let xii: null = null;
複製代碼

undefined 類型

undefined 表示尚未進行定義,與 null 不一樣的是 null 其實空,不是沒有定義。沒有定義的變量若是訪問了,會輸出 undefined, 或者報錯。

// js
let b = undefined;

//ts
let c: undefined = undefined
複製代碼

Symbol

符號,表示是獨一無二的,Symbol 從 JavaScript 中引入就是爲了解決獨一無二的特性。如:對象屬性名具備惟一性。 Symbol 是由 Symbol 函數調用建立,沒有構造函數

let sym = Symbol(123)
複製代碼

小結

JavaScript 中的基本數據類型 primitive data type 就是這六種。基本數據類型保存在棧中。基本數據類型沒有引用數據類型的變化。

JS/TS 引用數據類型

  1. 數組
  2. 對象
  3. 函數

數組

javascript 數組是一個數據的集合, 成員能夠是基本數據類型,也能夠是引用類型。可是 TypeScript 對數字成員進行了約束,必須所有爲指定的類型。

// 建立一個數組
let a = [1, 2, 3, 'string'];
var arr_names:number[] = new Array(4)  

// ts
let a: number[] = [1, 2, 3]; // 成員必須都是 number
let a: Array<number> = [1,2,3]; // 使用泛型約束全部成員都是number類型

// ts 指定類型
let b = [number, string, number] = [123, 'hello', 89]
複製代碼

對象類型

對象是key-value的集合,在 JavaScript 中 value,值能夠是:基本數據類型,引用數據類型。

// js
let ob = {
	aa: false,
    bb: 123,
    cc: 'this is cc',
    dd: null,
    ee: undefined;
    ff: Symbol("ff"),
    gg: [1, 2, 4],
    hh: function() {console.log("hh")},
    jj: {x: 123, y: false}
}

// 

let ob: Object = {
	aa: false,
    bb: 123,
    cc: 'this is cc',
    dd: null,
    ee: undefined;
    ff: Symbol("ff"),
    gg: [1, 2, 4],
    hh: function() {console.log("hh")},
    jj: {x: 123, y: false}
}
複製代碼

函數類型

// ts, 若是須要類型,須要在函數內部判斷類型
let func = function func(a) { console.log(a)}

// ts 參數類型,返回值類型,肯定函數類型
let fn = function fn(a: number):void {console.log(a)}
複製代碼

TS 的補充類型

  1. 元組類型: 元組類型容許您用固定數量的元素表示數組,這些元素的類型是已知的,但沒必要相同。
  2. 枚舉類型:是對標準數據類型集的有用補充enum
  3. Unknown 不知道類型: 描述編寫應用程序時不知道的變量類型
  4. Any 任意類型: 與unknown類型不一樣,類型變量any容許您訪問任意屬性,即便不存在也是如此
  5. Void 空類型: void有點相反any:根本沒有任何類型。通常用於函數返回值
  6. Never 永遠不會的類型:該never類型表示值是不會發生的類型

也就是說,數據類型上多了 6 中約束類型。

小結

  1. 基本數據類型 6 種,以及基本的建立方式。
  2. TS基本數據類型與 JS 相同,其對 JS 類型的補充如何 枚舉類型,any 類型等功能型類型
  3. 簡單對比 JS 與 TS 定義建立變量的區別,其實就是類型約束的區別。

下一步

  • 數據類型判斷
  • 類型斷言
相關文章
相關標籤/搜索