国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

TypeScript類型聲明書寫詳解

2024-05-06 15:35:22
字體:
來源:轉載
供稿:網友

本文總結一下TypeScript類型聲明的書寫,很多時候寫TypeScript不是問題,寫類型就特別糾結,我總結下,我在使用TypeScript中遇到的問題。如果你遇到類型聲明不會寫的時候,多看看lodash的聲明,因為lodash對數據進行各種變形操作,所以你能遇到的,都有參考示例。

基本類型

 // 變量 const num: number = 1; const str: string = 'str'; const bool: boolean = true; const nulls: null = null; const undefine: undefined = undefined; const symbols: symbol = Symbol('symbal'); const any: any = 'any types'; // typescript的any類型,相當于什么類型約束都沒有

數組

 // 數組: 推薦使用T[]這種寫法 const nums: number[] = [1, 2, 3, 4]; // 不推薦:Array<T>泛型寫法,因為在JSX中不兼容,所以為了統一都使用T[]這種類型 const strs: Array<string> = ['s', 't', 'r']; const dates: Date[] = [new Date(), new Date()];

數組的concat方法,返回類型為never[]問題

 // 數組concat方法的never問題 // 提示: Type 'string' is not assignable to type 'never'. const arrNever: string[] = [].concat(['s']); // 主要問題是:[]數組,ts無法根據上下文判斷數組內部元素的類型 // @see https://github.com/Microsoft/TypeScript/issues/10479 const fixArrNever: string[] = ([] as string[]).concat(['s']);

接口

接口是 TypeScript 的一個核心知識,它能合并眾多類型聲明至一個類型聲明:

而且接口可以用來聲明:函數,類,對象等數據類型

interface Name { first: string; second: string;}let username: Name = { first: 'John', second: 'Doe'};

any、null、undefined、void類型

// 特殊類型const any: any = 'any types'; // typescript的any類型,相當于什么類型都沒寫let nobody: any = 'nobody, but you';nobody = 123;let nulls: number = null;let bool: boolean = undefined;// voidfunction printUsername (name: string): void {  console.log(name);}

聯合類型

聯合類型在option bags模式場景非常實用,使用 **| **來做標記

function options(opts: {  types?: string;  tag: string | number;}): void {  }

交叉類型

最典型的使用場景就是繼承和mixin,或者copy等操作

// 交叉類型:如果以后遇到此種類型聲明不會寫,直接看Object.assign聲明寫法function $extend<T, U>(first: T, second: U): T & U { return Object.assign(first, second); // 示意而已}

元組 tuple

元組很少使用

let nameNumber: [string, number];// OknameNumber = ['Jenny', 221345];// Error// nameNumber = ['Jenny', '221345'];let tuple: [string, number];nameNumber = ['Jenny', 322134];const [usernameStr, uselessNum] = nameNumber;            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 闽清县| 遂宁市| 将乐县| 绥滨县| 利川市| 钦州市| 河间市| 彰化县| 锦屏县| 宝应县| 年辖:市辖区| 偃师市| 乌恰县| 政和县| 河源市| 息烽县| 响水县| 石渠县| 北辰区| 崇左市| 梁山县| 黑河市| 泽州县| 黑水县| 河北区| 武胜县| 兰溪市| 邵东县| 云林县| 罗城| 鹤山市| 曲阜市| 巴林右旗| 尼玛县| 多伦县| 公安县| 泗洪县| 华坪县| 陆丰市| 迭部县| 辛集市|