TypeScript筆記之基礎類型

說明

本筆記是對TypeScript中文網站內容的學習記錄中姜,記錄一些重要的受扳,容易忘記的知識點华望。文中的TypeScript簡稱(TS)蓬戚, JavaScript簡稱(JS)

JavaScript數據類型

  1. undefined(未定義),
  2. null(空),
  3. boolean(布爾型),
  4. string(字符串),
  5. symbol(符號),
  6. number(數字),
  7. object(對象)

TypeScript基礎類型

JS支持的幢泼,TS基本都支持。而且還提供了 枚舉類型挥吵,以及any等丹允。枚舉 和 any比較重要的扇售。

枚舉

enum Color {Red, Green, Blue};
let c: Color = Color.Green;
enum Color {Red = 1, Green = 2, Blue = 4};
let c: Color = Color.Green;
enum Color {Red = 1, Green, Blue};
let colorName: string = Color[2];
alert(colorName);

跟其他語言的enum類似,使用方便靈活。

任意值 any、Object

JS中有Object, TS中有any

任意值背景

有時候岸更,我們會想要為那些在編程階段還不清楚類型的變量指定一個類型债查。 這些值可能來自于動態(tài)的內容,比如來自用戶輸入或第三方代碼庫。 這種情況下甚带,我們不希望類型檢查器對這些值進行檢查而是直接讓它們通過編譯階段的檢查。 那么我們可以使用 any類型來標記這些變量。

TS中的any

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

JS中的Object

let notSure: Object = 4;
notSure = "maybe a string instead";
console.log(notSure);
notSure = false;
console.log(notSure);

差異

Object 和 any都可以達到上述要求。官網上有段描述:

在對現有代碼進行改寫的時候甜害,any
類型是十分有用的尔店,它允許你在編譯時可選擇地包含或移除類型檢查共螺。 你可能認為 Object有相似的作用,就像它在其它語言中那樣佳吞。 但是 Object類型的變量只是允許你給它賦任意值 - 但是卻不能夠在它上面調用任意的方法,即便它真的有這些方法:

let notSure: any = 4;
notSure.ifItExists(); // okay, ifItExists might exist at runtime
notSure.toFixed(); // okay, toFixed exists (but the compiler doesn't check)

let prettySure: Object = 4;
prettySure.toFixed(); // Error: Property 'toFixed' doesn't exist on type 'Object'.

上述Object在TS中是無法編譯通過的阱冶。

let listany: any[] = [1, true, "free"];
console.log(listany);

數組

定義數組, 2中方式

  1. let list: number[] = [1,2,3]
  2. let list: Array<number> = [1,2,3]

元組 Tuple

元組類型允許表示一個已知元素數量和類型的數組镊叁,各元素的類型不必相同。 比如惫皱,你可以定義一對值分別為 string和number類型的元組氢妈。

// Declare a tuple typelet
x: [string, number];
// Initialize it
x = ['hello', 10]; // OK
// Initialize it incorrectly
x = [10, 'hello']; // Error

問題

當訪問一個越界的元素,會使用聯(lián)合類型替代:

x[3] = 'world'; // OK, 字符串可以賦值給(string | number)類型

console.log(x[5].toString()); // OK, 'string' 和 'number' 都有 toString

x[6] = true; // Error, 布爾不是(string | number)類型

但是實操發(fā)現杠人,執(zhí)行

console.log(x[5].toString());

是不正確的勋乾,運行會提示 toString是undefined類型。修改為 x[3]是沒有任何問題的嗡善, 所以這里存在疑問辑莫。

空值 void

Null and Undefined

// Not much else we can assign to these variables!
let u: undefined = undefined
;let n: null = null;
//Null / Undefinedlet 
number1: number = null;
//let number1: number = undefined;
console.log(number1);

但是,編譯的時候添加參數 --strictNullChecks 后罩引,就不能編譯通過了的各吨,是個好東西。

never

類型斷言

有時候你會遇到這樣的情況袁铐,你會比TypeScript更了解某個值的詳細信息揭蜒。 通常這會發(fā)生在你清楚地知道一個實體具有比它現有類型更確切的類型。
通過類型斷言這種方式可以告訴編譯器昭躺,“相信我忌锯,我知道自己在干什么”。 類型斷言好比其它語言里的類型轉換领炫,但是不進行特殊的數據檢查和解構偶垮。 它沒有運行時的影響,只是在編譯階段起作用帝洪。 TypeScript會假設你似舵,程序員,已經進行了必須的檢查葱峡。
類型斷言有兩種形式砚哗。 其一是“尖括號”語法:

let someValue: any = "this is a string";

let strLength: number = (<string>someValue).length;

另一個為as語法:

let someValue: any = "this is a string";

let strLength: number = (someValue as string).length;

OMOP:個人覺得 as 使用 順手, 并且砰奕,你要是使用JSX蛛芥, 只有as語法斷言是允許的提鸟。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仅淑,隨后出現的幾起案子称勋,更是在濱河造成了極大的恐慌,老刑警劉巖涯竟,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赡鲜,死亡現場離奇詭異,居然都是意外死亡庐船,警方通過查閱死者的電腦和手機银酬,發(fā)現死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筐钟,“玉大人揩瞪,你說我怎么就攤上這事〉量茫” “怎么了壮韭?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長纹因。 經常有香客問我喷屋,道長,這世上最難降的妖魔是什么瞭恰? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任屯曹,我火速辦了婚禮,結果婚禮上惊畏,老公的妹妹穿的比我還像新娘恶耽。我一直安慰自己,他們只是感情好颜启,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布偷俭。 她就那樣靜靜地躺著,像睡著了一般缰盏。 火紅的嫁衣襯著肌膚如雪涌萤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天口猜,我揣著相機與錄音负溪,去河邊找鬼。 笑死济炎,一個胖子當著我的面吹牛川抡,可吹牛的內容都是我干的。 我是一名探鬼主播须尚,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼崖堤,長吁一口氣:“原來是場噩夢啊……” “哼侍咱!你這毒婦竟也來了?” 一聲冷哼從身側響起密幔,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤放坏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后老玛,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡钧敞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年蜡豹,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溉苛。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡镜廉,死狀恐怖,靈堂內的尸體忽然破棺而出愚战,到底是詐尸還是另有隱情娇唯,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布寂玲,位于F島的核電站塔插,受9級特大地震影響,放射性物質發(fā)生泄漏拓哟。R本人自食惡果不足惜想许,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望断序。 院中可真熱鬧流纹,春花似錦、人聲如沸违诗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽诸迟。三九已至茸炒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亮蒋,已是汗流浹背扣典。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留慎玖,地道東北人贮尖。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像趁怔,于是被迫代替她去往敵國和親湿硝。 傳聞我的和親對象是個殘疾皇子薪前,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內容