實用程式類型簡介
TypeScript 中的實用程式類型可讓您透過包含、排除或修改屬性將現有類型轉換為新類型。當您需要建立針對特定用例自訂的類型定義而不重複程式碼時,這非常有用。
在 TypeScript 中使用 ReturnType 和 Awaited
使用 TypeScript 時,您可能經常需要確定函數的回傳類型。為此,TypeScript 提供了一種名為 ReturnType 的便利實用程式類型。讓我們來看看如何使用它,包括處理非同步函數。
1。 取得函數的回傳類型
要取得函數的回傳類型,您可以使用 ReturnType 公用程式類型。這是一個例子:
function foo() { const something:string = "" return something; } function async fooWithAsync() { const something:string = "" return something; }
// 將返回 Promise>;
在此範例中:
foo 函數傳回一個字串。
ReturnType 提取 foo 的回傳類型,即字串。
2. 處理非同步函數
處理非同步函數時,傳回型別是 Promise。這是一個例子:
類型 MyReturnType = ReturnType
在此範例中:
fooWithAsync 函數傳回一個解析為字串的 Promise。
ReturnType 提取回傳類型,即 Promise。
3。 使用 Awaited 實現非同步函數
如果您想要取得非同步函數傳回的 Promise 的解析類型,可以使用 Awaited 實用程式類型。方法如下:
type MyAsyncReturnType = Awaited<returntype foo>> </returntype>
在此範例中:
ReturnType 提供 Promise。
期待已久> 將 Promise 解析為其基礎型,即字串。
摘要:
ReturnType:提取函數的回傳類型。
等待:解析 Promise 的類型。
export const getEvents = async (user: User): Promise<apiresponse> => { const eventsApiUrl: string = `${PROMOS_END_POINTS.EVENTS}`; const apiInstance: AxiosInstance = getAxiosInstance(user, API_SERVICES.PROMOTIONS); const response: AxiosResponse = await apiInstance.get(eventsApiUrl); return response.data; }; type OfferEvent = Awaited<returntype getevents>>; const initEvent:OfferEvent = {event:[]} </returntype></apiresponse>
透過組合這些實用程式類型,您可以有效地確定 TypeScript 中同步和非同步函數的傳回類型。
*在 TypeScript 中使用條件型別擷取回傳類型
*
在 TypeScript 中,您可以使用條件類型和類型推斷從函數類型中動態提取返回類型。這對於創建靈活且可重複使用的類型實用程式特別有用。讓我們探討一下它如何與 MyReturnTypeWithCondition 類型別名一起使用。
type MyReturnTypeWithCondition<t> = T extends (...args: any[]) => infer R ? R : never; </t>
分解
Conditional Check: T extends (...args: any[]) => infer R
這部分檢查 T 是否為函數型別。
...args: any[] 語法符合任何函式簽章。
infer R 關鍵字將函數的回傳類型擷取到類型變數 R 中。
結果:? R:從來沒有
如果 T 是函數型,則型別別名解析為 R,即函數的傳回型別。
如果 T 不是函數類型,則解析為 never。
實際例子
考慮以下範例來查看其實際效果:
function foo() { const something:string = "" return something; } function async fooWithAsync() { const something:string = "" return something; }
在上面的範例中,ReturnType 將是布林值,因為
範例函數是傳回布林值的函數類型。如果您使用非函數類型,ReturnType 將永遠不會。
這種方法可讓您建立高度適應性的類型實用程序,可以根據類型的結構推斷和操作類型。這是 TypeScript 的一個強大功能,可以增強類型安全性和程式碼可維護性。
在 TypeScript 中組合和美化類型
使用 TypeScript 時,您經常需要組合多種類型或介面來建立更複雜的結構。這有時會導致類型難以閱讀和管理。本文檔將探討如何組合兩種類型、使巢狀類型更漂亮以及檢查合併類型是否相等。
1。 結合兩種類型
在 TypeScript 中組合兩種類型是一項常見任務。您可以使用交集類型 (&) 來實現此目的。假設您有兩個介面:OfferSummaryWithoutConfig 和 OfferTypeConfiguration,並且您想要將它們組合起來。
type MyAsyncReturnType = Awaited<returntype foo>> </returntype>
您可以使用交集類型 (&) 來組合這兩個介面:
export const getEvents = async (user: User): Promise<apiresponse> => { const eventsApiUrl: string = `${PROMOS_END_POINTS.EVENTS}`; const apiInstance: AxiosInstance = getAxiosInstance(user, API_SERVICES.PROMOTIONS); const response: AxiosResponse = await apiInstance.get(eventsApiUrl); return response.data; }; type OfferEvent = Awaited<returntype getevents>>; const initEvent:OfferEvent = {event:[]} </returntype></apiresponse>
這將建立一個新類型,其中包含 OfferSummaryWithoutConfig 和 OfferTypeConfiguration 中的所有屬性。
2.美化嵌套類型
合併類型時,產生的類型有時看起來很混亂且難以閱讀。為了讓這些類型更具可讀性,您可以使用名為 Prettify 的實用程式類型。
type MyReturnTypeWithCondition<t> = T extends (...args: any[]) => infer R ? R : never; </t>
此實用程式類型迭代 T 類型的鍵並重建它,使類型定義更清晰、更易於閱讀。
組合類型後,您可以使用 Prettify 公用程式類型來清理產生的類型
Conditional Check: T extends (...args: any[]) => infer R
3. 檢查合併類型是否相等
為了確保合併後的類型完全符合您的預期,您可以使用實用程式類型來檢查兩種類型是否相同、精確或相等。
IsExact:檢查兩種類型是否完全相同。
type ExampleFunction = (x: number, y: string) => boolean; type ReturnType = MyReturnTypeWithCondition<examplefunction>; // ReturnType will be boolean </examplefunction>
IsIdentical:使用條件類型來比較兩種類型。
型 IsIdentical
IsEqual:確保兩種類型具有相同的鍵。
export interface OfferSummaryWithoutConfig { id: string; auditInfo: AuditInfo; offerBasicInfo: OfferBasicInfo; metaData: MetaData; conditionGroupsSummary: ConditionGroupsSummary[]; rewardGroupsSummary: RewardGroupsSummary[]; userOperations: ActionPermission; } export interface OfferTypeConfiguration { id: number; name: string; description: string; configuration: Configuration; }
您可以使用這些實用程式類型來檢查 CombinedType 是否與其他類型 OfferSummary 相同、精確或相等。
type CombinedType = OfferSummaryWithoutConfig & { offerTypeConfiguration: OfferTypeConfiguration; };
實際例子
讓我們用一個實際的例子來總結一下:
type Prettify<t> = { }; </t>
以上是TypeScript :實用工具類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript字符串替換方法詳解及常見問題解答 本文將探討兩種在JavaScript中替換字符串字符的方法:在JavaScript代碼內部替換和在網頁HTML內部替換。 在JavaScript代碼內部替換字符串 最直接的方法是使用replace()方法: str = str.replace("find","replace"); 該方法僅替換第一個匹配項。要替換所有匹配項,需使用正則表達式並添加全局標誌g: str = str.replace(/fi

因此,在這裡,您準備好了解所有稱為Ajax的東西。但是,到底是什麼? AJAX一詞是指用於創建動態,交互式Web內容的一系列寬鬆的技術。 Ajax一詞,最初由Jesse J創造

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

將矩陣電影特效帶入你的網頁!這是一個基於著名電影《黑客帝國》的酷炫jQuery插件。該插件模擬了電影中經典的綠色字符特效,只需選擇一張圖片,插件就會將其轉換為充滿數字字符的矩陣風格畫面。快來試試吧,非常有趣! 工作原理 插件將圖片加載到畫布上,讀取像素和顏色值: data = ctx.getImageData(x, y, settings.grainSize, settings.grainSize).data 插件巧妙地讀取圖片的矩形區域,並利用jQuery計算每個區域的平均顏色。然後,使用

本文將引導您使用jQuery庫創建一個簡單的圖片輪播。我們將使用bxSlider庫,它基於jQuery構建,並提供許多配置選項來設置輪播。 如今,圖片輪播已成為網站必備功能——一圖胜千言! 決定使用圖片輪播後,下一個問題是如何創建它。首先,您需要收集高質量、高分辨率的圖片。 接下來,您需要使用HTML和一些JavaScript代碼來創建圖片輪播。網絡上有很多庫可以幫助您以不同的方式創建輪播。我們將使用開源的bxSlider庫。 bxSlider庫支持響應式設計,因此使用此庫構建的輪播可以適應任何

數據集對於構建API模型和各種業務流程至關重要。這就是為什麼導入和導出CSV是經常需要的功能。在本教程中,您將學習如何在Angular中下載和導入CSV文件


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3漢化版
中文版,非常好用