日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁(yè) > 科技  > 軟件

這個(gè) TypeScript 技巧將讓你大開眼界

來(lái)源: 責(zé)編: 時(shí)間:2024-06-06 17:43:35 208觀看
導(dǎo)讀TypeScript 是一個(gè)了不起的工具,可以用來(lái)操縱現(xiàn)有數(shù)據(jù)并開發(fā)出優(yōu)秀的實(shí)踐方法。今天我們將探索如何從字符串?dāng)?shù)組中正確提取全名,以確保輸出的類型安全和干凈。問題我們檢查一下這段代碼并理解它的問題:const names = ["D

3eE28資訊網(wǎng)——每日最新資訊28at.com

TypeScript 是一個(gè)了不起的工具,可以用來(lái)操縱現(xiàn)有數(shù)據(jù)并開發(fā)出優(yōu)秀的實(shí)踐方法。3eE28資訊網(wǎng)——每日最新資訊28at.com

今天我們將探索如何從字符串?dāng)?shù)組中正確提取全名,以確保輸出的類型安全和干凈。3eE28資訊網(wǎng)——每日最新資訊28at.com

問題

我們檢查一下這段代碼并理解它的問題:3eE28資訊網(wǎng)——每日最新資訊28at.com

const names = ["Daniel Craciun", "John Doe", "Harry Pigeon"]const findName = (surname: string) => {  return names.find((name) => name.includes(surname))}// 我們可以傳入任意字符串,這是不理想的。console.log(findName("Craciun")) // 輸出: Daniel Craciunconsole.log(findName("Doee")) // 輸出: undefined

這段代碼使用了一個(gè)名字?jǐn)?shù)組進(jìn)行搜索。findName 函數(shù)接受一個(gè)姓氏字符串并返回相關(guān)的全名。問題在于當(dāng)你輸入 "Doee" 進(jìn) findName 函數(shù)時(shí)會(huì)出現(xiàn)。3eE28資訊網(wǎng)——每日最新資訊28at.com

這個(gè)不起眼的拼寫錯(cuò)誤會(huì)導(dǎo)致 undefined 輸出,這可能會(huì)在后續(xù)導(dǎo)致錯(cuò)誤,因?yàn)闆]有任何機(jī)制阻止我們犯這個(gè)錯(cuò)誤。3eE28資訊網(wǎng)——每日最新資訊28at.com

這時(shí) TypeScript 就派上用場(chǎng)了。3eE28資訊網(wǎng)——每日最新資訊28at.com

如果我們確保 findName 只接受字面的姓氏,即 Craciun, Doe, Pigeon,那么當(dāng)我們輸入 names 數(shù)組中不存在的輸入(如 "Doee")時(shí),編譯器就會(huì)報(bào)警。3eE28資訊網(wǎng)——每日最新資訊28at.com

解決方案

我們已經(jīng)確定,findName 的有效參數(shù)需要包含所有現(xiàn)有的姓氏。為了實(shí)現(xiàn)這一點(diǎn),我們創(chuàng)建一個(gè)名為 ExtractSurname 的泛型類型。3eE28資訊網(wǎng)——每日最新資訊28at.com

ExtractSurname 的代碼可能看起來(lái)很復(fù)雜,但我們將逐步解析它:3eE28資訊網(wǎng)——每日最新資訊28at.com

type ExtractSurname<T extends string> = T extends `${infer Firstname} ${infer Surname}` ? Surname : null

這里 ExtractSurname 接受一個(gè)泛型參數(shù) T,該參數(shù)使用 extends 操作符指的是任何字面字符串。3eE28資訊網(wǎng)——每日最新資訊28at.com

在 ExtractSurname<"Daniel"> 中,T 的值等于 "Daniel"。3eE28資訊網(wǎng)——每日最新資訊28at.com

接下來(lái)我們應(yīng)用 TypeScript 的三元操作符,這類似于 JavaScript 的三元操作符,但我們比較的是類型而不是實(shí)際數(shù)據(jù)。3eE28資訊網(wǎng)——每日最新資訊28at.com

我們知道 names 數(shù)組的格式是 “<Name> <Surname>”,所以這里的 infer 關(guān)鍵字從 T 中提取子類型。3eE28資訊網(wǎng)——每日最新資訊28at.com

在ExtractSurname<"Daniel Craciun">中:3eE28資訊網(wǎng)——每日最新資訊28at.com

infer Firstname = "Daniel"infer Surname = "Craciun"

最后,如果輸入滿足我們的 “” 格式,則返回姓氏作為類型,否則返回 null3eE28資訊網(wǎng)——每日最新資訊28at.com

好了,我們的 ExtractSurname 類型已經(jīng)準(zhǔn)備好了。3eE28資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在我們需要一個(gè) Surname 類型來(lái)表示 names 中的所有姓氏。3eE28資訊網(wǎng)——每日最新資訊28at.com

type ExtractSurname<T extends string> = T extends `${infer Firstname} ${infer Surname}` ? Surname : nullconst names = ["Daniel Craciun", "John Doe", "Harry Pigeon"] as consttype Surname = ExtractSurname<(typeof names)[number]>

names 滿足 ExtractSurname 的 “<Name> <Surname>” 格式。3eE28資訊網(wǎng)——每日最新資訊28at.com

我們使用 as const 將 names 的類型縮小為字面字符串?dāng)?shù)組。這意味著我們將 names 的類型從 string 強(qiáng)制轉(zhuǎn)換為:3eE28資訊網(wǎng)——每日最新資訊28at.com

readonly ["Daniel Craciun", "John Doe", "Harry Pigeon"]

參數(shù) (typeof names)[number] 表示 names 中每個(gè)索引元素的類型:3eE28資訊網(wǎng)——每日最新資訊28at.com

"Daniel Craciun" | "John Doe" | "Harry Pigeon"

最后,這是 Surname 的結(jié)果類型:3eE28資訊網(wǎng)——每日最新資訊28at.com

type of Surname: "Craciun" | "Doe" | "Pigeon"

最后一步是更新我們之前定義的 findName 函數(shù),用一個(gè)新的 findNameUsingSurname 函數(shù),如下所示:3eE28資訊網(wǎng)——每日最新資訊28at.com

// 接受實(shí)際的 `Surname` 而不是一般的字符串。const findNameUsingSurname = (surname: Surname) => {  // 注意:我們需要后綴操作符 "!" 來(lái)斷言 `find` 函數(shù)不會(huì)返回 undefined 值。  return names.find((name) => name.includes(surname))!}// 唯一可接受的輸入:"Craciun", "Doe", "Pigeon" = 最大類型安全const fullName = findNameUsingSurname("Craciun")// 輸出: "Daniel Craciun"console.log(fullName)

這就是我們預(yù)期的 TypeScript 編譯器的魔法:3eE28資訊網(wǎng)——每日最新資訊28at.com

結(jié)論

TypeScript 是一個(gè)強(qiáng)大的工具,可以確保代碼的類型安全性。通過使用 ExtractSurname 類型,我們能夠確保 findName 函數(shù)只接受有效的姓氏,從而避免拼寫錯(cuò)誤和潛在的運(yùn)行時(shí)錯(cuò)誤。這個(gè)技巧不僅提高了代碼的安全性,還增強(qiáng)了開發(fā)效率。希望你能在項(xiàng)目中嘗試這個(gè)技巧,并體驗(yàn)它帶來(lái)的便利和強(qiáng)大功能。3eE28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-92478-0.html這個(gè) TypeScript 技巧將讓你大開眼界

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 通過Spring Boot結(jié)合實(shí)時(shí)流媒體技術(shù)對(duì)考試過程進(jìn)行實(shí)時(shí)監(jiān)控

下一篇: 前端生成海報(bào)圖技術(shù)選型與問題解決

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 太卷!Redmi MAX 100英寸電視便宜了:12999元買Redmi史上最大屏

    8月5日消息,從小米商城了解到,Redmi MAX 100英寸巨屏電視日前迎來(lái)官方優(yōu)惠,到手價(jià)12999元,比發(fā)布價(jià)便宜了7000元,在大屏電視市場(chǎng)開卷。據(jù)了解,Redmi MAX 100
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數(shù)量是否小于或等于一個(gè)數(shù)字。例如,一個(gè)擁有三個(gè)或更多子項(xiàng)的grid。你可能會(huì)想,為什么需要這樣做呢?在某些情況下,一個(gè)組件或一個(gè)布局可能會(huì)
  • 學(xué)習(xí)JavaScript的10個(gè)理由...

    作者 | Simplilearn編譯 | 王瑞平當(dāng)你決心學(xué)習(xí)一門語(yǔ)言的時(shí)候,很難選擇到底應(yīng)該學(xué)習(xí)哪一門,常用的語(yǔ)言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個(gè)大新聞是Meta AI推出了新的開源授權(quán)的大型語(yǔ)言模型Llama 2。這是一項(xiàng)非常重要的進(jìn)展:Llama 2可免費(fèi)用于研究和商業(yè)用途。(幾小時(shí)前,swyy發(fā)現(xiàn)它已從LLaMA 2更名為L(zhǎng)la
  • 雅柏威士忌多款單品價(jià)格大跌,泥煤頂流也不香了?

    來(lái)源 | 烈酒商業(yè)觀察編 | 肖海林今年以來(lái),威士忌市場(chǎng)開始出現(xiàn)了降溫跡象,越來(lái)越多不斷暴漲的網(wǎng)紅威士忌也開始悄然回歸市場(chǎng)理性。近日,LVMH集團(tuán)旗下蘇格蘭威士忌品牌雅柏(Ardbeg
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財(cái)經(jīng)(niudaocaijing)7月5日,企鵝FM發(fā)布官方公告稱由于業(yè)務(wù)調(diào)整,將于9月6日正式停止運(yùn)營(yíng),這意味著騰訊音樂長(zhǎng)音頻業(yè)務(wù)走向消亡。騰訊在長(zhǎng)音頻領(lǐng)域還在摸索。為
  • 超級(jí)標(biāo)準(zhǔn)版旗艦!iQOO 11S全球首發(fā)iQOO超算獨(dú)顯芯片

    上半年已接近尾聲,截至目前各大品牌旗下的頂級(jí)旗艦都已悉數(shù)亮相,而下半年即將推出的頂級(jí)旗艦已經(jīng)成為了數(shù)碼圈爆料的主流,其中就包括全新的iQOO 11S系
  • iQOO 11S或7月上市:搭載“雞血版”驍龍8Gen2 史上最強(qiáng)5G Soc

    去年底,iQOO推出了“電競(jìng)旗艦”iQOO 11系列,作為一款性能強(qiáng)機(jī),iQOO 11不僅全球首發(fā)2K 144Hz E6全感屏,搭載了第二代驍龍8平臺(tái)及144Hz電競(jìng)屏,同時(shí)在快充
  • 蘋果MacBook Pro 2021測(cè)試:仍不支持平滑滾動(dòng)

    據(jù)10月30日9to5 Mac 消息報(bào)道,蘋果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后獲得了不錯(cuò)的評(píng)價(jià),亮點(diǎn)包括行業(yè)領(lǐng)先的性能,令人印象深刻的電池續(xù)航,精美豐
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲精品在线看| 国产精品久久久免费| 久久久亚洲精品一区二区三区| 欧美全黄视频| 欧美精品国产精品| 国产精品多人| 国产午夜精品视频| 亚洲经典在线| 亚洲一区二区三区乱码aⅴ蜜桃女| 性欧美18~19sex高清播放| 久久青草欧美一区二区三区| 欧美大片在线看| 国产精品久久999| 激情婷婷久久| 一本色道久久88综合亚洲精品ⅰ | 先锋影音久久久| 亚洲精品乱码久久久久久蜜桃91| 亚洲最新视频在线| 久久成年人视频| 欧美激情bt| 国产日韩视频| 亚洲精品影视| 欧美一区二区三区四区在线| 亚洲欧美一区二区三区在线| 久久精品亚洲| 欧美日韩国产限制| 国产综合色在线| 一区二区不卡在线视频 午夜欧美不卡在 | 国产精品久久国产愉拍 | 一本久久综合亚洲鲁鲁五月天| 久久精品99国产精品酒店日本| 午夜天堂精品久久久久| 美国成人直播| 国产精品综合视频| 日韩视频不卡| 亚洲欧洲一区二区天堂久久 | 欧美成人在线网站| 国产亚洲成av人在线观看导航| 国产精品午夜国产小视频| 精品成人在线视频| 亚洲在线成人| 欧美另类在线播放| 激情欧美一区二区| 亚洲欧美韩国| 欧美日韩亚洲一区二区三区| 在线日韩av片| 亚洲三级影院| 欧美中文字幕第一页| 欧美日韩亚洲综合一区| 1024成人| 久久精品国产99| 美女在线一区二区| 国产日韩精品一区| 亚洲一区二区在线免费观看| 欧美激情1区2区| 尤物视频一区二区| 久久成人综合网| 国产精品日韩电影| 一区二区三区色| 亚洲欧美视频| 欧美日韩综合在线| 亚洲人成人一区二区在线观看 | 开心色5月久久精品| 欧美激情视频一区二区三区免费| 国产视频久久| 亚洲欧美日韩精品| 欧美私人网站| 99国内精品| 午夜在线a亚洲v天堂网2018| 欧美日韩直播| 一区二区欧美激情| 欧美精品一区在线观看| 国产伦精品一区二区三区高清| 一本色道综合亚洲| 欧美激情日韩| 亚洲精品黄色| 欧美精品一区二区三区很污很色的 | 在线视频一区二区| 欧美日韩理论| 一区二区三区视频在线观看| 欧美日韩国产在线| 日韩午夜在线电影| 亚洲视频一二区| 欧美日韩国产综合新一区| 亚洲激情在线激情| 欧美国产日本韩| 91久久国产精品91久久性色| 欧美+日本+国产+在线a∨观看| 在线观看国产欧美| 免费日韩精品中文字幕视频在线| 亚洲电影免费在线观看| 欧美+亚洲+精品+三区| 最新国产精品拍自在线播放| 欧美国产欧美综合| 99re热精品| 欧美视频二区36p| 亚洲在线成人| 国产亚洲成精品久久| 久久免费高清视频| 国产精品免费一区二区三区观看 | 最新日韩av| 欧美精品久久久久久久久久| 99精品99| 国产精品久久婷婷六月丁香| 午夜精品一区二区三区在线| 国产亚洲欧美另类中文| 久久久免费精品视频| 亚洲国产第一| 欧美日韩国产在线观看| 亚洲女人天堂成人av在线| 国产日韩精品一区观看| 久久男人资源视频| 国产精品老女人精品视频| 先锋影音久久久| 黄色精品在线看| 欧美国产综合一区二区| 亚洲视频欧美视频| 欧美理论电影在线播放| 一区二区三区视频在线播放| 国产精品永久在线| 久久人人97超碰国产公开结果| 亚洲国产一区二区视频| 欧美视频一区二区三区…| 欧美亚洲一级片| 亚洲国产精品女人久久久| 欧美午夜精品久久久久久浪潮 | 亚洲男人的天堂在线观看| 国语自产精品视频在线看抢先版结局| 蜜臀a∨国产成人精品| 在线亚洲自拍| 国产在线播精品第三| 欧美激情在线观看| 午夜精品亚洲一区二区三区嫩草| 伊人久久噜噜噜躁狠狠躁| 欧美久久电影| 欧美在线视频免费| 亚洲精选成人| 国产一区二区三区高清| 亚洲欧美日韩精品在线| 国产一区二区黄| 欧美久久久久免费| 欧美在线一区二区三区| 亚洲另类自拍| 国产在线视频欧美一区二区三区| 欧美精品999| 久久精品二区三区| 9人人澡人人爽人人精品| 国产综合精品一区| 欧美午夜无遮挡| 美女国产一区| 欧美一区二区大片| 日韩视频不卡中文| 激情综合在线| 国产精品亚洲欧美| 欧美精品一区二区三区在线播放| 久久精品国产精品亚洲精品| 一本色道久久综合亚洲精品不卡| 黑人巨大精品欧美一区二区小视频 | 欧美激情亚洲国产| 久久久999成人| 亚洲在线视频免费观看| 亚洲三级毛片| 一区二区三区在线视频观看| 国产精品久久久久久一区二区三区| 美女网站在线免费欧美精品| 久久福利影视| 亚洲影院在线| 日韩亚洲在线观看| 亚洲第一伊人| 狠狠做深爱婷婷久久综合一区| 国产精品每日更新| 欧美日韩dvd在线观看| 裸体歌舞表演一区二区| 欧美在线一级va免费观看| 亚洲午夜免费视频| 亚洲美女精品成人在线视频| 亚洲第一页在线| 国产一区二区久久精品| 国产精品美腿一区在线看| 欧美日韩一区成人| 欧美精品v国产精品v日韩精品| 久久手机精品视频| 欧美资源在线| 性欧美1819性猛交| 亚洲综合视频一区| 中日韩高清电影网| 99国产精品久久久久老师| 亚洲国产一区在线观看| 一区二区在线视频播放| 国产日产精品一区二区三区四区的观看方式| 久久精品一区| 亚洲欧美日韩综合一区| 亚洲一区二区三区四区中文| 亚洲美女中文字幕| 亚洲精品在线二区| 亚洲精品视频在线观看网站| 91久久精品美女高潮| 在线日韩中文字幕| 影音先锋日韩资源| 一区精品在线播放| 雨宫琴音一区二区在线| 激情国产一区二区| 一区二区在线视频| 亚洲丶国产丶欧美一区二区三区|