国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

TS typeof 操作符原來有這五種用途!

開發(fā) 前端
本文阿寶哥將介紹 typeof 操作符的幾種常見的應用場景,在以后的項目中,也許你就可以用得上了。

在 JavaScript 中你可以通過 typeof 操作符來獲取變量的類型,那么你知道在 TypeScript 中 typeof 操作符有哪些用途么?

本文阿寶哥將介紹 typeof 操作符的幾種常見的應用場景,在以后的項目中,也許你就可以用得上了。

這是一個普通的 JavaScript 對象,在 TypeScript 中你可以使用 type 或 interface 來定義該對象的類型。有了該對象類型之后,你就可以利用 TypeScript 內(nèi)置的工具類型,比如 Partial、Required、Pick 或 Readonly 等來處理對象類型,從而滿足不同的業(yè)務需求。

const lolo = {
name: "lolo",
age: 7,
address: {
province: "福建",
city: "廈門",
},
};
interface Person {
name: string;
age: number;
address: {
province: string;
city: string;
};
}

對于簡單的對象來說,這也許不算什么。但對于嵌套層級比較深的復雜大對象來說,手動定義其類型會令人腦殼疼。針對這個問題,你可以使用 typeof 操作符:

type Person = typeof lolo;
type Address = typeof lolo["address"];

圖片

相比前面手動定義類型,使用 typeof 操作符之后是不是覺得簡單很多。在 TypeScript 中,枚舉類型是一種特殊的類型,它會被編譯成普通的 JavaScript 對象:

enum HttpMethod {
Get,
Post,
}
"use strict";
var HttpMethod;
(function (HttpMethod) {
HttpMethod[HttpMethod["Get"] = 0] = "Get";
HttpMethod[HttpMethod["Post"] = 1] = "Post";
})(HttpMethod || (HttpMethod = {}));

因此,你也可以對枚舉類型使用 typeof 操作符。但這往往沒有多大的實際用途,處理枚舉類型時,一般還會搭配 keyof 操作符:

const method: typeof HttpMethod = {
Get: 0,
Post: 1,
};
type Method = keyof typeof HttpMethod; // "Get" | "Post"

圖片

由以上結果可知,利用 keyof 和 typeof 操作符,你就可以獲取枚舉類型的所有屬性名。

在日常工作中,typeof 操作符還有另一個比較常見的使用場景。即利用它來獲取函數(shù)對象的類型,在獲取對應的函數(shù)類型之后,你可以繼續(xù)利用 TypeScript 內(nèi)置的 ReturnType 和 Parameters 工具類型來分別獲取函數(shù)的返回值類型和參數(shù)類型:

function add(a: number, b: number) {
return a + b;
}
type AddType = typeof add; // (a: number, b: number) => number
type AddReturnType = ReturnType<AddType> // number
type AddParamsType = Parameters<AddType> // [a: number, b: number]

圖片

既然 typeof 操作符可以處理函數(shù)對象,那么它可以處理 Class 么?答案是可以的。

class Point {
x: number;
y: number;
constructor(x: number, y: number) {
this.x = x;
this.y = y;
}
}
// new (x: number, y: number) => Point
function createPoint(Constructor: typeof Point, x: number, y: number) {
return new Constructor(x, y);
}

圖片

在以上代碼中,createPoint 是一個工廠函數(shù),用于快速創(chuàng)建 Point 類的實例。通過 typeof 操作符,你就可以獲取 Point 類對應的構造簽名,從而實現(xiàn)相應的類型校驗。在定義 Constructor 參數(shù)類型時,如果不使用 typeof 操作符的話,將會出現(xiàn)以下錯誤信息:

function createPoint(Constructor: Point, x: number, y: number) {
return new Constructor(x, y); // Error:類型 "Point" 沒有構造簽名。ts(2351)
}

圖片

此外,在使用 typeof 操作符的過程中,如果你想要獲取更精確的類型,那么你可以結合 TypeScript 3.4 版本中引入的 const 斷言。具體的使用方式如下:

let requestMethod = "Get";
let requestMethod2 = "Get" as const;
type R0 = typeof requestMethod; // string
type R1 = typeof requestMethod2; // "Get"
let user = {
id: 666,
name: "阿寶哥",
};
let user2 = {
id: 666,
name: "阿寶哥",
} as const;
// { id: number; name: string; }
type U0 = typeof user;
// type U1 = { readonly id: 666; readonly name: "阿寶哥"; }
type U1 = typeof user2;

圖片

由以上結果可知,使用 const 斷言之后,再利用 typeof 操作符,我們就可以獲得更精確的類型。

關于 const 斷言相關的知識點,感興趣的話,你可以自行了解一下。而如果你對前面使用過的 keyof 操作符還不了解的話,可以觀看 “??TS 內(nèi)置工具類型中的 keyof 操作符有啥用???” 這篇文章。 

責任編輯:姜華 來源: 全棧修仙之路
相關推薦

2018-09-29 05:12:54

廣域網(wǎng)網(wǎng)絡連接DDN

2024-05-23 13:54:40

2025-06-23 00:00:05

2023-06-27 09:21:33

2024-07-12 11:54:38

2025-04-14 08:10:00

負載均衡代碼java

2021-10-31 18:59:55

Python操作符用法

2017-07-12 08:20:32

閃存用途企業(yè)

2009-11-17 10:42:58

PHP操作符

2009-08-19 17:26:28

C# 操作符

2010-07-14 14:55:07

Perl操作符

2022-04-19 21:05:03

JavaScript內(nèi)置工具

2010-07-19 11:00:24

Perl操作符

2011-04-08 16:26:14

JavaScript

2010-07-14 14:30:31

Perl操作符

2009-09-15 17:16:58

LINQ查詢操作符

2010-07-14 14:18:51

Perl操作符

2009-09-16 09:09:23

Linq Contai

2012-02-06 09:13:23

LINQ

2009-07-21 09:31:00

Scala操作符
點贊
收藏

51CTO技術棧公眾號

av二区在线| yy4480电影网| 四虎精品一区二区免费| 黄色一区二区在线| 欧美成人午夜视频| 蜜桃特黄a∨片免费观看| 国产乱一区二区| 999精品视频| 在线播放日韩专区| siro系绝美精品系列| 成人bbav| 亚洲国产精品精华液2区45| 伊人情人网综合| 青柠在线影院观看日本| 国产欧美中文在线| www在线观看免费| 国产精品密蕾丝视频下载| 日韩欧美在线视频日韩欧美在线视频 | 亚洲福利电影网| 天天色综合6| 亚洲一区二区三区中文字幕在线观看| 黑人狂躁日本妞一区二区三区 | 成人午夜精品| 国产成人综合自拍| 欧美乱妇高清无乱码| 国产精品毛片久久久久久久久久99999999| 日本人妖一区二区| 成人动漫视频在线观看完整版| 欧美黑白配在线| 成人黄色在线播放| 中文字幕一区二区精品区| 成人3d动漫一区二区三区91| 在线成人直播| 亚洲国产精品www| 最新日韩三级| 亚洲最新中文字幕| 精品国产鲁一鲁****| 欧美精品videos性欧美| 中文精品电影| 91精品国产91久久久久麻豆 主演| 国产亚洲欧洲一区高清在线观看| 中文字幕在线网| 极品日韩av| 免费在线精品视频| 色综合久久网| 欧美性xxxx69| 日本最黄一级片免费在线| 精品国产免费人成电影在线观看四季| 欧美一区在线直播| 欧美男男video| 性感美女极品91精品| 国产日本在线播放| 欧美自拍丝袜亚洲| 美女av一区| www婷婷av久久久影片| 日韩影视高清在线观看| 亚洲第一天堂无码专区| theporn国产在线精品| 国产69精品久久777的优势| 中文字幕一区二区三区域| 欧美一级午夜免费电影| 天堂99x99es久久精品免费| 亚洲成人一区二区三区| 国产午夜亚洲精品羞羞网站| free性欧美| 久久99精品久久久久久秒播放器 | 成人久久18免费网站麻豆 | 国产精品极品美女在线观看免费| 日产国产高清一区二区三区| av黄色免费在线| 精品视频在线播放免| 免费黄色在线网站| 97超碰资源| 亚洲一区观看| 亚洲伊人精品酒店| 欧美日韩一区三区| 亚洲成a人片综合在线| 久久久久久国产精品久久| 国产精品xxx| 欧洲生活片亚洲生活在线观看| 成人免费看黄网站| 成年人网站大全| 毛片毛片毛片毛片| 在线播放麻豆| 中文国产一区| 日韩精品一二三四| wwwwxxxxx欧美| 亚洲综合精品伊人久久| 成人影院在线| 成人激情小说网站| 日本激情综合网| 精品国产91久久久久久久妲己| 99日韩精品| 污污的网站在线看| 亚洲视频你懂的| 国产精品9999久久久久仙踪林| 国内自拍欧美| 91精品国模一区二区三区| 国产精品美女久久久| 亚洲女优在线| 国模gogo一区二区大胆私拍 | 欧美一区二区高清在线观看| 91午夜精品| 欧美在线你懂得| 色8久久影院午夜场| 亚洲国产精品激情在线观看| 欧美黑人激情| 国产精品视频xxx| 日本黄色a视频| 日本一区二区三区视频在线看| 国产精品日韩在线| 国产精一区二区三区| 在线观看av中文| 美日韩精品免费视频| 亚洲成人在线| 激情视频免费网站| 日韩国产高清视频在线| 精品免费一区二区| 久久成人免费观看| 国产一区在线不卡| 中文字幕一区二区三区免费视频| 日韩精品免费一线在线观看| 欧美jizz| juliaann成人作品在线看| 精品视频www| 新狼窝色av性久久久久久| 意大利激情丛林无删减版dvd| 中文字幕一精品亚洲无线一区| 超碰中文在线| 91精品美女在线| 国产精品久久久久久久岛一牛影视 | 97视频精彩视频在线观看| 亚洲第一在线视频| 超碰一区二区三区| 国产精品不卡在线| 久久中文字幕一区| 精品人在线二区三区| 国产剧情一区在线| 福利片在线一区二区| 2022亚洲天堂| 欧美日韩国产三级| 久久99精品国产自在现线 | 欧美另类老肥妇| 亚洲欧美中日韩| 男人天堂成人网| 久久国产欧美日韩精品| 日本精品另类| 亚州黄色一级| 欧美精品成人网| 国产午夜三级一区二区三| 亚洲最大网站| 成人综合网站| 18禁免费无码无遮挡不卡网站| 亚洲国产成人精品久久| 亚洲精品乱码久久久久久| 不卡免费追剧大全电视剧网站| 久久男女视频| 欧美乱妇高清无乱码| 麻豆精品视频在线观看视频| 老司机福利在线视频| 久久免费看av| 欧美一区二区视频观看视频| 国产欧美欧美| 1区2区在线观看| 水蜜桃亚洲一二三四在线| 欧美mv和日韩mv的网站| 日韩电影一区二区三区| jizzjizz中国精品麻豆| 一级黄色片播放| 久久精品视频中文字幕| 国产精品热久久久久夜色精品三区| 国产精品tv| 裸体av在线| 999热视频在线观看| 欧美一区在线视频| 韩国毛片一区二区三区| 成人软件在线观看| 国产成人无码a区在线观看视频| 欧美成人精品xxx| 日韩一区欧美小说| 久久久久免费av| 欧美成人精品一区二区男人看| 欧美日韩综合精品| 亚洲色图35p| 欧美黄色一级| 超碰av在线免费观看| 欧美一级在线播放| 午夜一区二区三区视频| 一区三区视频| а√天堂8资源在线| 亚洲人成无码www久久久| 日韩免费精品视频| 免费日韩av片| 亚州欧美日韩中文视频| 亚洲自拍与偷拍| 国产日韩欧美高清免费| 亚洲人免费短视频| 免费亚色电影在线观看| 欧美日韩系列| www.xxxx欧美|