日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

深入Typescript--02-Typescript数据类型

發布時間:2023/10/11 综合教程 77 老码农
生活随笔 收集整理的這篇文章主要介紹了 深入Typescript--02-Typescript数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本類型

一.最最基礎的類型

  • 布爾、數字、字符串類型
let bool:boolean = true;
let num:number = 10;
let str:string = 'hello world';

二.元組類型

  • 限制長度個數、類型一一對應,ts中自己實現的,內容固定,類型固定
let tuple:[string,number,boolean] = ['zf',10,true];
// 像元組中增加數據,只能增加元組中存放的類型,就是說你只能Push進去你定義過的類型,也不可以通過索引去賦值(不可以tuple[2]=false這樣寫)
tuple.push('回龍觀');

三.數組類型

  • 聲明數組中元素數據類型,兩種聲明方式,可參考arr3和arr4的寫法
let arr1:number[] = [1,2,3];
let arr2:string[] = ['1','2','3'];
let arr3:(number|string)[] = [1,'2',3]; // 這個叫做聯合類型,要記得加括號哦~
let arr4:Array<number | string> = [1,'2',3]; // 泛型方式來聲明
let arr5:any[] = ['', 1, {}] // 如果是無規律的,沒得辦法咯~

四.枚舉類型

  • ts最終會被編譯成JS,是沒有類型的,枚舉只是在開發時候使用

  • 寫好以后,經過編譯,會變成一個對象

  • 枚舉可以支持反舉,但是限于索引,會根據上一個的值進行自動推斷

  • 大寫是規范

  • 使用賦值聲明(const)的話,不會生成一個對象更簡潔

enum USER_ROLE {
USER, // 默認從0開始
ADMIN,
MANAGER
}
// {0: "USER", 1: "ADMIN", 2: "MANAGER", USER: 0, ADMIN: 1, MANAGER: 2}
  • 可以枚舉,也可以反舉
// 編譯后的結果
(function (USER_ROLE) {
USER_ROLE[USER_ROLE["USER"] = 0] = "USER";
USER_ROLE[USER_ROLE["ADMIN"] = 1] = "ADMIN";
USER_ROLE[USER_ROLE["MANAGER"] = 2] = "MANAGER";
})(USER_ROLE || (USER_ROLE = {}));



  • 異構枚舉
enum USER_ROLE {
USER = 'user',
ADMIN = 1,
MANAGER,
}
  • 常量枚舉
const enum USER_ROLE {
USER,
ADMIN,
MANAGER,
}
console.log(USER_ROLE.USER)// console.log(0 /* USER */);

五.any類型

  • 不進行類型檢測
let arr:any = ['jiagou',true,{name:'zf'}]

六.null 和 undefined

  • 任何類型的子類型,如果strictNullChecks的值為true,但是tsconfig嚴格模式下,則不能把null 和 undefined賦值給其他類型,
let name:number | boolean;
name = null;

七.void類型

  • 只能接受null,undefined。一般用于函數的返回值
let a:void;
a = undefined;
  • 嚴格模式下不能將null賦予給void

八.never類型

  • 任何類型的子類型,never代表不會出現的值。不能把其他類型賦值給never
  • 出錯,死循環,永遠走不到的判斷就是never類型
  • 它也是其他類型的子類型,但是一般很少用
function error(message: string): never {
throw new Error("err");
}
function loop(): never {
while (true) { }
}
function fn(x:number | string){
if(typeof x == 'number'){ }else if(typeof x === 'string'){ }else{
console.log(x); // never
}
}

九.Symbol類型

  • Symbol表示獨一無二
const s1 = Symbol('key');
const s2 = Symbol('key');
console.log(s1 == s2); // false

十.BigInt類型

const num1 = Number.MAX_SAFE_INTEGER + 1;
const num2 = Number.MAX_SAFE_INTEGER + 2;
console.log(num1 == num2)// true,因為它們已經超過了最大值了,所以我們用下面的寫法 let max: bigint = BigInt(Number.MAX_SAFE_INTEGER)
console.log(max + BigInt(1) === max + BigInt(2))
  • number類型和bigInt類型是不兼容的

十一.object對象類型

  • object表示非原始類型
let create = (obj:object):void=>{}
create({});
create([]);
create(function(){})

聯合類型

一.類型推導

  • 聲明變量沒有賦予值時默認變量是any類型
let name; // 類型為any
name = 'zhufeng'
name = 10;
  • 聲明變量賦值時則以賦值類型為準
let name = 'zhufeng'; // name被推導為字符串類型
name = 10;

二.包裝對象

  • 我們在使用基本數據類型時,調用基本數據類型上的方法,默認會將原始數據類型包裝成對象類型
let bool1:boolean = true;
let bool2:boolean = Boolean(1);
let bool3:Boolean = new Boolean(2);
  • boolean是基本數據類型 , Boolean是他的封裝類

三.聯合類型

  • 在使用聯合類型時,沒有賦值只能訪問聯合類型中共有的方法和屬性
  • 使用場景:在取值的時候會遇到聯合類型
  • !表示此值非空(ele!.innerHtml = ''),可做非空斷言,就是你認為這個一定有,有問題了你來擔責任
  • 強轉類型在下圖
  • 最常用的:ele?.style?.color 等同于 ele && ele.style && ele.style.color
  • false ?? true // 表示排除null 和 undefined
let name:string | number // 聯合類型
console.log(name!.toString()); // 公共方法
name = 10;
console.log(name!.toFixed(2)); // number方法
name = 'aaaaa';
console.log(name!.toLowerCase()); // 字符串方法





let ele: HTMLElement | null = document.getElementById('#app');
ele!.style.color = 'red'; // 斷定ele元素一定有值

四.類型斷言

  • 類型斷言
let name: string | number;
(name! as number).toFixed(2); // 強制
((<number>name!).toFixed(2));
  • 盡量使用第一種類型斷言因為在react中第二種方式會被認為是jsx語法

  • 雙重斷言

let name: string | boolean;
((name! as any) as string);
  • 盡量不要使用雙重斷言,會破壞原有類型關系,斷言為any是因為any類型可以被賦值給其他類型

五.字面量類型

type Direction = 'Up' | 'Down' | 'Left' | 'Right';
let direction:Direction = 'Down';
  • 可以用字面量當做類型,同時也表明只能采用這幾個值(限定值)。類似枚舉。

函數類型

一.函數的兩種聲明方式

  • 通過function關鍵字來進行聲明
function sum(a: string, b: string):string {
return a+b;
}
sum('a','b')
  • 可以用來限制函數的參數和返回值類型

  • 通過表達式方式聲明

type Sum = (a1: string, b1: string) => string;
let sum: Sum = (a: string, b: string) => {
return a + b;
};

二.可選參數

let sum = (a: string, b?: string):string => {
return a + b;
};
sum('a'); // 可選參數必須在其他參數的最后面

三.默認參數

let sum = (a: string, b: string = 'b'): string => {
return a + b;
};
sum('a'); // 默認參數必須在其他參數的最后面

四.剩余參數

const sum = (...args: string[]): string => {
return args.reduce((memo, current) => memo += current, '')
}
sum('a', 'b', 'c', 'd')

五.函數的重載

function toArray(value: number): number[]
function toArray(value: string): string[]
function toArray(value: number | string) {
if (typeof value == 'string') {
return value.split('');
} else {
return value.toString().split('').map(item => Number(item));
}
}
toArray(123); // 根據傳入不同類型的數據 返回不同的結果
toArray('123');

總結

以上是生活随笔為你收集整理的深入Typescript--02-Typescript数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品后入内射日本在线观看 | 成年人看片网站 | 久久av网站 | 超碰caopor | 黄色美女av | 91超碰在线播放 | 一级黄色片网站 | 国产精品羞羞答答 | 国产精品第8页 | 97久久人国产精品婷婷 | 成年视频在线观看 | 字幕网在线观看 | 护士人妻hd中文字幕 | 免费黄片毛片 | 成人做受黄大片 | 成人免费视频国产免费麻豆 | 久久中文精品 | 99热伊人 | 久久美女av | 亚洲精品第五页 | 国产精品一区二区免费看 | 亚洲激情自拍偷拍 | 国产情侣酒店自拍 | 中文在线观看免费高清 | 久久久免费看片 | 污视频在线观看网址 | 欧美日韩高清免费 | 91欧美日韩麻豆精品 | jvid乐乐 | 免费在线播放黄色片 | 欧美资源站 | 艳妇乳肉豪妇荡乳 | 国产日韩欧美在线播放 | 国产女人与zoxxxx另类 | 日本女人毛茸茸 | 美女爆乳18禁www久久久久久 | 乱淫的女高中暑假调教h | 成人永久免费 | 三级在线国产 | 极品91 | mm131美女大尺度私密照尤果 | 国产你懂得 | www男人的天堂| 顶级尤物极品女神福利视频 | 日韩精品小视频 | 黑人添美女bbb添高潮了 | 原创av| 91看片看淫黄大片 | 午夜欧美成人 | 国产精品久久久久久久久久久久久久久久久 | 操处女逼视频 | 男男h黄动漫啪啪无遮挡软件 | 尤物国产视频 | 中文字幕av久久 | 国产又黄又骚 | 国产小视频在线看 | 婷婷激情小说 | 日韩欧美高清视频 | 日本aⅴ在线 | 免费人成又黄又爽又色 | 91青青操| 欧美成人精品一区二区三区 | 按摩毛片 | 亚洲av无码一区二区乱子伦as | 91九色蝌蚪 | 欧美一区二区三区视频 | 国产66页 | 激情视频在线播放 | 亚洲在线视频一区 | 长腿校花无力呻吟娇喘的视频 | 波多av| 午夜视频h | 欧美一区二区福利视频 | 天堂va欧美ⅴa亚洲va一国产 | 另类欧美亚洲 | 中文字幕超碰在线 | 美女扒开腿让人桶爽 | www.四虎.| 婷婷婷色| 日皮视频免费看 | www.99re.| 久久国产精品视频 | 欧美一区二区激情 | 嫩草在线观看 | 美女91网站| 夜夜躁狠狠躁 | 精品综合在线 | 国产日产亚洲系列最新 | 精品人妻一区二区三区麻豆91 | 新婚之夜玷污岳丰满少妇在线观看 | 日批视频在线看 | 日本成人在线播放 | 国产亚洲视频一区 | 色婷婷av一区二区三区之红樱桃 | 依依成人在线 | 一级特黄特色的免费大片视频 | 亚洲妇女无套内射精 | 黄网地址 | 1级黄色大片 |