typeScript學(xué)習(xí)的第2天

一位偉大的哲人說話這么一句話,‘如果你每天進(jìn)步一丟丟,就一丟丟,未來將不可估量’(我剛編的)。百米沖刺,不需要,因為我還有時間,還很充足;長跑需要耐力,堅持。運動不擅長,走路我們都會,哪怕是爬。人,最怕的就是原地踏步。
everyone is No.1

1、基礎(chǔ)類型

我們知道JavaScript有五大基礎(chǔ)類型Undefined,Null,Boolean,Number ,String,ES6有多了一個Symbol
而typeScript有多少呢?

  1. any //任意類型 聲明為 any 的變量可以賦予任意類型的值。
  2. number //數(shù)字類型 雙精度 64 位浮點值。它可以用來表示整數(shù)和分?jǐn)?shù)。。
  3. string //字符串類型 一個字符系列,使用單引號(')或雙引號(")來表示字符串類型。反引號(`)來定義多行文本和內(nèi)嵌表達(dá)式。
  4. boolean //布爾類型 表示邏輯值:true 和 false。
  5. 數(shù)組類型 聲明變量為數(shù)組。
  6. 元組類型 元組類型用來表示已知元素數(shù)量和類型的數(shù)組,各元素的類型不必相同,對應(yīng)位置的類型需要相同。
  7. enum //枚舉類型 聲明變量為數(shù)組。
  8. void //void 用于標(biāo)識方法返回值的類型,表示該方法沒有返回值。
  9. null //null 表示對象值缺失。
  10. undefined //undefined 用于初始化變量為一個未定義的值
  11. never //never never 是其它類型(包括 null 和 undefined)的子類型,代表從不會出現(xiàn)的值。
    因為ts的嚴(yán)格性,在我們定義常量變量數(shù)組對象函數(shù)時要申明其類型,且嚴(yán)格執(zhí)行否則 報錯。
//數(shù)字類型 number 
let age: number = 15;
let age: number = "困";//Type '"困"' is not assignable to type 'number'  //將無法編譯成js文件

//字符串類型 string
let name: string = "托尼老濕"; //這里定義的name再全局種變量沖突,因為ts模塊化 所以加上 export 即可,
let year: number = 5;
let jobTime: string = `您好,我是 ${ name } 工作 ${ year} 年了`;
export = {};

//布爾類型 boolean 
let age: number = 15;
let flag1: boolean = true;
let flag2: boolean = age; //age 報錯   flag1  正常

//數(shù)組類型
// 在元素類型后面加上[]
let arr1: number[] = [1, 2];
// 或者使用數(shù)組泛型
let arr2: Array<number> = [1, "a"];//報錯 

//元組 元組類型用來表示已知元素數(shù)量和類型的數(shù)組  各元素的類型不必相同,對應(yīng)位置的類型需要相同。
let arr: [string, number];
arr = ['hao', 1];    // 運行正常
// arr = [1, 'hao'];    // 報錯
console.log(arr[0]);    // 輸出 hao

//枚舉  枚舉類型用于定義數(shù)值集合。
enum Color {Red, Green, Blue};
let c: Color = Color.Blue;
console.log(c);    // 輸出 2

//編譯成js代碼
var Color;
(function (Color) {
    Color[Color["Red"] = 0] = "Red";
    Color[Color["Green"] = 1] = "Green";
    Color[Color["Blue"] = 2] = "Blue";
})(Color || (Color = {}));
;
console.log(Color) 
var c = Color.Blue;//輸出 { '0': 'Red', '1': 'Green', '2': 'Blue', Red: 0, Green: 1, Blue: 2 }
console.log(c); // 輸出 2

//void 用于標(biāo)識方法返回值的類型,表示該方法沒有返回值。
function hello1(): void {
    alert("Hello Runoob");
}
function hello2(): number {
    return 1;
}
function hello2(): string {
    return "1";
}

//任意類型Any
//變量的值會動態(tài)改變時,比如來自用戶的輸入,任意值類型可以讓這些變量跳過編譯階段的類型檢查,示例代碼如下
let x: any = 1;    // 數(shù)字類型
x = 'I am who I am';    // 字符串類型
x = false;    // 布爾類型

x.ifItExists(); 
x.toFixed();  

//定義存儲各種類型數(shù)據(jù)的數(shù)組時,示例代碼如下:
let arrayList: any[] = [1, false, 'fine'];
arrayList[1] = 100;

// null
// 在 JavaScript 中 null 表示 "什么都沒有"。
// null是一個只有一個值的特殊類型。表示一個空對象引用。
// 用 typeof 檢測 null 返回是 object。
// undefined
// 在 JavaScript 中, undefined 是一個沒有設(shè)置值的變量。
// typeof 一個沒有值的變量會返回 undefined。
// Null 和 Undefined 是其他任何類型(包括 void)的子類型,可以賦值給其它類型,如數(shù)字類型,此時,賦值后的類型會變成 null 或 undefined。而在TypeScript中啟用嚴(yán)格的空校驗(--strictNullChecks)特性,就可以使得null 和 undefined 只能被賦值給 void 或本身對應(yīng)的類型,示例代碼如下:

// 啟用 --strictNullChecks
let x: number;
x = 1; // 運行正確
x = undefined;    // 運行錯誤
x = null;    // 運行錯誤

// 啟用 --strictNullChecks
let x: number | null | undefined; //如果一個類型可能出行 null 或 undefined, 可以用 | 來支持多種類型,示例代碼如下:
x = 1; // 運行正確
x = undefined;    // 運行正確
x = null;    // 運行正確

//never 類型never 是其它類型(包括 null 和 undefined)的子類型,代表從不會出現(xiàn)的值。這意味著聲明為 never 類型的變量只能被 never 類型所賦值,在函數(shù)中它通常表現(xiàn)為拋出異?;驘o法執(zhí)行到終止點(例如無限循環(huán)),示例代碼如下:
let x: never;
let y: number;

// 運行錯誤,數(shù)字類型不能轉(zhuǎn)為 never 類型
x = 123;

// 運行正確,never 類型可以賦值給 never類型
x = (()=>{ throw new Error('exception')})();

// 運行正確,never 類型可以賦值給 數(shù)字類型
y = (()=>{ throw new Error('exception')})();

// 返回值為 never 的函數(shù)可以是拋出異常的情況
function error(message: string): never {
    throw new Error(message);
}

// 返回值為 never 的函數(shù)可以是無法被執(zhí)行到的終止點的情況
function loop(): never {
    while (true) {}
}

我覺得一個人成熟的標(biāo)志是,不要計較太多,而是竭力爭??!
good luck

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

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

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