目前我正在工作/維護遺留的js/react 應用程序,其中沒有選項可以重新工作到typesript,所以這就是為什麼我打開jsDoc 作為JS 的現有開發時類型系統。
太長了;
Typescript npm 模組由 jsDoc 製作,useDuck 在 70LOC 下帶回了 redux 的黃金時代。此模組在開發時的主要用例,可幫助您的複雜狀態保持類型安全。
const [state, quack] = useDuck(reducer, initialState, actionsMap);
jsdoc-duck
從 Typescript 到 jsDoc 之路
當我建立了一個輕量級的 React State npm 函式庫時,我對 TypeScript 的體驗更深入了:react-state-factory
User declared state and actions types -> useStateFactory -> [state, dispatchedActoionCollection]
測試 jsDoc 限制
在我開始使用一些 jsDoc 註解來幫助我的工作之後,下一步有點更加大膽:將此模組重新設計為 jsDoc。乍一看,這是一項不可能的任務。但在花了幾週時間了解 jsDoc 後,我看到了一些曙光。
恐怖類型系統:減速機
在某個點上,當我嘗試編寫一個reducer函數時,我發現了jsDoc能力的硬限制,結果是一個Quack,但當然它啟動了一個空的{}。因此,只有reducer運行結束時才創建了正確的Quack,因為該類型對包含所有請求的鍵的物件感到好奇。所以這個問題到現在我都無法解決,如果有人能給我一個好主意,我該如何解決它,請與我分享或作為合作者加入這個模組開發。
另一個陷阱:沒有 TS 的模組中沒有類型
一開始我創建了一個 js 文件,其中包含所有必要的 jsDoc @typedef,遲早它會起作用。這就是我認為為他們創建節點模組的一步。
但可悲的事實是,包含導出類型的 npm 模組不能僅與 jsDoc 一起使用,因此必須編譯 d.ts,因此最後 jsDoc 模組不要說 100% JS,而是構建也使用 typescript。
jsdoc-duck 模組中的@typedef
正如您在 dev.to 論壇中所認識到的,語法高亮無法識別 jsDoc。其他錯誤的事情在我的測試中,如果你只寫一行,這個 @typedef 就會起作用,所以它違反了乾淨的程式碼。
在我的下一篇部落格文章中,我將寫的是這個庫的具體用例,排序:使用 useReducer 簡化和類型安全反應狀態處理。
/** * @template T - Payload Type * @typedef {T extends { type: infer U, payload?: infer P } ? { type: U, payload?: P } : never} ActionType */ // @ts-ignore /** @template AM - Actions Map @typedef {{ [K in AM['type']]: K }} Labels */ // @ts-ignore /** @template AM - Actions Map @typedef {{ [T in AM["type"]]: Extract<am type: t> extends { payload: infer P } ? (payload: P) => void : () => void }} Quack */ /** * @template ST - State * @template AM - Actions Map * @typedef {(state: ST, action: AM) => ST} Reducer */ </am>
以上是jsDoc npm 模組任務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

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

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

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

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

核心要点 利用 JavaScript 增强结构化标记可以显著提升网页内容的可访问性和可维护性,同时减小文件大小。 JavaScript 可有效地用于为 HTML 元素动态添加功能,例如使用 cite 属性自动在块引用中插入引用链接。 将 JavaScript 与结构化标记集成,可以创建动态用户界面,例如无需页面刷新的选项卡面板。 确保 JavaScript 增强功能不会妨碍网页的基本功能至关重要;即使禁用 JavaScript,页面也应保持功能正常。 可以使用高级 JavaScript 技术(

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


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載
最受歡迎的的開源編輯器