Typescript 學(xué)習(xí)筆記二:數(shù)據(jù)類型

中文網(wǎng):https://www.tslang.cn/

官網(wǎng):http://www.typescriptlang.org/

目錄:

前言

typescript中為了使編寫的代碼更規(guī)范肠缨,更有利于維護盏阶,增加了類型校驗名斟,寫 ts 代碼必須指定類型。

在typescript中主要給我們提供了以下數(shù)據(jù)類型:

  • boolean(布爾類型)
  • number(數(shù)字類型)
  • string(字符串類型)
  • array(數(shù)組類型)
  • tuple(元組類型)
  • enum(枚舉類型)
  • any(任意類型)
  • null 和 undefined 類型
  • void 類型
  • never 類型
  • object 對象類型

boolean(布爾類型)

  • ES5 的寫法:
var flag = true;
flag = 456;
  • ts 寫法:以上的 ES5 寫法到了 ts 中就變成了錯誤的寫法闷袒,因為將一個 number 類型值賦給了一個 Boolean 的變量。
let flag:boolean = true;
// flag = 123; // 錯誤
flag = false;  //正確

number(數(shù)字類型)

  • ES5 的寫法:
var num = 123;
num = 456;
  • ts 寫法:
let num:number = 123;
// num = '456'; // 錯誤
num = 456;  //正確

string(字符串類型)

  • ES5 的寫法:
var str = 'this is ts';
str = 'test';
  • ts 寫法:
let str:string = 'this is ts';
str = 'test';

array(數(shù)組類型)

  • ES5 的寫法:
var arr = ['12', '23'];
arr = [34, 45];
  • ts 寫法1:
let arr:string[] = ['12', '23'];
arr = ['45', '56'];
  • ts 寫法2:
let arr:Array<number> = [1, 2];
arr = ['45', '56'];

tuple(元組類型):屬于數(shù)組的一種

let tupleArr:[number, string, boolean] = [12, '34', true];

賦值的類型淘捡、位置焦除、個數(shù)需要和定義(生明)的類型作彤、位置膘魄、個數(shù)一致创葡。

enum(枚舉類型)

隨著計算機的不斷普及灿渴,程序不僅只用于數(shù)值計算,還更廣泛地用于處理非數(shù)值的數(shù)據(jù)骚露。
例如:性別缚窿、月份、星期幾误续、顏色扫茅、單位名诞帐、學(xué)歷、職業(yè)等愕鼓,都不是數(shù)值數(shù)據(jù)慧起。在其它程序設(shè)計語言中蚓挤,一般用一個數(shù)值來代表某一狀態(tài),這種處理方法不直觀估灿,易讀性差。

如果能在程序中用自然語言中有相應(yīng)含義的單詞來代表某一狀態(tài)域慷,則程序就很容易閱讀和理解犹褒。
也就是說弛针,事先考慮到某一變量可能取的值,盡量用自然語言中含義清楚的單詞來表示它的每一個值座云,
這種方法稱為枚舉方法朦拖,用這種方法定義的類型稱枚舉類型璧帝。

定義:

enum 枚舉名 { 
    標識符[=整型常數(shù)], 
    標識符[=整型常數(shù)], 
    ... 
    標識符[=整型常數(shù)]
};  

舉例:

enum statusCode {
  success,
  fail,
  pending
};
let res:statusCode = statusCode.success;
console.log(res); // 0富寿,如果標識符沒有賦值页徐,它的值就是下標,默認從 0 開始
enum statusCode {
  success = 2,
  fail,
  pending
};
let res1:statusCode = statusCode.success;
console.log(res1) // 2恤左,指定的值
let res3:statusCode = statusCode.fail;
console.log(res1) // 3飞袋,若沒指定链患,從指定的往后開始
enum statusCode {
  success = 2,
  fail = 1,
  pending = 3
};
let res1:statusCode = statusCode.success;
console.log(res1) // 2,指定的值
let res3:statusCode = statusCode.fail;
console.log(res1) // 1纲仍,指定的值郑叠,可隨意指定

any(任意類型)

表示可以指定任何類型的值锻拘。一般用于聲明 dom 節(jié)點署拟。

let num:any = 123;
num = 'str';
num = true;
let boxEl:object = document.getElementById('box'); // 錯誤歌豺,dom 節(jié)點不是真正的對象
let boxEl:any = document.getElementById('box'); // 正確
boxEl.style.color = 'pink';

null 和 undefined 類型

默認情況下null和undefined是所有類型的子類型馒铃。 就是說你可以把 null 和 undefined 賦值給 number 類型的變量。

一般用于可能為 undefined 或 null 的變量区宇。

  • undefined: 定義沒有賦值就是 undefined
let num:number;
console.log(num); // 輸出:undefined 報錯

let num:undefined;
console.log(num); // 輸出:undefined 正確
let num:number | undefined; // | 表示或者
console.log(num); // 正確
num = 123;
console.log(num); // 正確
  • null
let num:null;
num = null;
  • 一個變量可能是 number 類型议谷,可能是 null卧晓,可能是 undefined
let num:number | null | undefined;
num = 1234;

void 類型

typescript 中的 void 表示沒有任何類型逼裆,一般用于定義方法的時候方法沒有返回值胜宇。

  • ES5 的寫法:
function fn () {
  console.log('fn');
}
fn();
  • ts 的寫法:

無返回值

function fn ():void { // 正確的寫法
  console.log('fn);
}
fn();

function fn ():undefined { // 錯誤的寫法
  console.log('fn);
}
fn();

函數(shù)沒有返回值的時候掸屡,只能為 void仅财,不能為 undefined。

有返回值

function fn ():number {
  return 123;
}
console.log(fn());

never 類型

typescript 中的 never 是其他類型 (包括 null 和 undefined)的子類型碗淌,可以賦值給任何類型盏求,代表從不會出現(xiàn)的值抖锥。但是沒有類型是 never 的子類型,這意味著聲明 never 的變量只能被 never 類型所賦值碎罚。

never 類型一般用來指定那些總是會拋出異嘲醴希或根本就不會有返回值的函數(shù)表達式或箭頭函數(shù)表達式的返回值類型。

let a:never;
a = 123; // 錯誤的寫法

a = (() => { // 正確的寫法
  throw new Error('錯誤');
})()

object 對象類型

let obj:object;
obj = {name: 'Wang', age: 25};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末荆烈,一起剝皮案震驚了整個濱河市拯勉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌憔购,老刑警劉巖宫峦,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異玫鸟,居然都是意外死亡屎飘,警方通過查閱死者的電腦和手機檐盟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門陌宿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掰烟,“玉大人蝎亚,你說我怎么就攤上這事∶饭撸” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵劣针,是天一觀的道長灭翔。 經(jīng)常有香客問我稀蟋,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挟伙。我一直安慰自己烘豹,他們只是感情好筷笨,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布照雁。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪燕酷。 梳的紋絲不亂的頭發(fā)上酱讶,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天软免,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的给郊。 我是一名探鬼主播毛俏,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎芋肠,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肴甸,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年澳泵,在試婚紗的時候發(fā)現(xiàn)自己被綠了维苔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片没宾。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡段审,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抑淫,到底是詐尸還是另有隱情绷落,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布始苇,位于F島的核電站砌烁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏催式。R本人自食惡果不足惜函喉,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荣月。 院中可真熱鬧管呵,春花似錦、人聲如沸哺窄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萌业。三九已至坷襟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間生年,已是汗流浹背婴程。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留抱婉,地道東北人档叔。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像授段,于是被迫代替她去往敵國和親蹲蒲。 傳聞我的和親對象是個殘疾皇子番甩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 冬之晨 冬天黎明的電廠侵贵,沒有成群的鳥兒不斷鳴唱著歌兒,也沒有任何痕跡的生物飛過天空缘薛,有時會有薄霧籠罩窍育,白茫而又顯得...
    不造叫什么醬閱讀 310評論 0 0
  • 想象著明天的樣子,卻不知道自己應(yīng)該如何做宴胧。面對曾經(jīng)只有懊惱漱抓,沒有后悔,面對現(xiàn)在我卻有無限的后悔不知所措恕齐,好象人...
    素常閱讀 189評論 0 1
  • 一般防止上傳漏洞手法 客戶端檢測 客戶端驗證代碼形如下: 接收文件的腳本upload.php代碼如下: 繞過: 服...
    cws閱讀 5,793評論 1 22