国产探花免费观看_亚洲丰满少妇自慰呻吟_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;            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 尼玛县| 宿州市| 古丈县| 凉城县| 民权县| 潮安县| 石嘴山市| 宽城| 建宁县| 霍邱县| 肥西县| 郁南县| 得荣县| 礼泉县| 屏东市| 灵台县| 台南市| 曲松县| 扶风县| 墨竹工卡县| 威海市| 彝良县| 亳州市| 湛江市| 兴和县| 南充市| 七台河市| 清涧县| 西平县| 龙川县| 富顺县| 托里县| 广宗县| 连城县| 阳朔县| 奈曼旗| 会理县| 阿尔山市| 长海县| 德格县| 临猗县|