文章編號:11075時間:2024-09-30人氣:
在軟件開發(fā)過程中,調(diào)試是一個至關(guān)重要的步驟,它可以幫助開發(fā)者識別和糾正代碼中的錯誤。Visual Studio 2010 SP1 提供了強(qiáng)大的調(diào)試功能,使開發(fā)者能夠高效地完成這項任務(wù)。
斷點(diǎn)是一種常見的調(diào)試技術(shù),它允許開發(fā)者在代碼執(zhí)行到特定位置時暫停程序。Visual Studio 2010 SP1 中的斷點(diǎn)功能非常易于使用,開發(fā)者只需點(diǎn)擊代碼行旁邊的灰色區(qū)域即可設(shè)置斷點(diǎn)。
設(shè)置斷點(diǎn)后,當(dāng)程序執(zhí)行到該行時,它將暫停,并且開發(fā)者可以在斷點(diǎn)處檢查程序狀態(tài),例如變量值和調(diào)用堆棧。
單步執(zhí)行是一種逐步執(zhí)行代碼的方法,它允許開發(fā)者逐行查看代碼的執(zhí)行過程。Visual Studio 2010 SP1 提供了多種單步執(zhí)行選項,包括逐語句執(zhí)行、逐函數(shù)執(zhí)行和逐過程執(zhí)行。
開發(fā)者可以使用快捷鍵或工具欄按鈕來單步執(zhí)行代碼。單步執(zhí)行可以幫助開發(fā)者了解代碼的執(zhí)行流程,并識別引起錯誤的特定代碼行。
條件斷點(diǎn)是一種高級調(diào)試技術(shù),它允許開發(fā)者僅在滿足特定條件時才在斷點(diǎn)處暫停程序。這可以幫助開發(fā)者篩選掉非相關(guān)的信息,并專注于需要解決的錯誤。
Visual Studio 2010 SP1 中的條件斷點(diǎn)可以基于各種條件,例如變量值、函數(shù)調(diào)用或異常。開發(fā)者可以在設(shè)置斷點(diǎn)時指定這些條件。
監(jiān)視是一種跟蹤變量值或表達(dá)式的變化的調(diào)試技術(shù)。Visual Studio 2010 SP1 提供了一個強(qiáng)大的監(jiān)視窗口,允許開發(fā)者在程序執(zhí)行期間監(jiān)視多個變量。
開發(fā)者可以右鍵單擊變量或表達(dá)式并選擇“監(jiān)視”選項來添加監(jiān)視。監(jiān)視窗口將顯示變量或表達(dá)式的當(dāng)前值,并在每次更改時更新。
異常是程序執(zhí)行期間發(fā)生的錯誤或意外情況。Visual Studio 2010 SP1 提供了全面的異常處理功能,使開發(fā)者能夠輕松捕獲、診斷和修復(fù)異常。
當(dāng)發(fā)生異常時,Visual Studio 2010 SP1 將暫停程序并顯示異常詳細(xì)信息。開發(fā)者可以通過查看異常消息、調(diào)用堆棧和局部變量來診斷異常原因。
調(diào)試器附加功能允許開發(fā)者將調(diào)試器附加到正在運(yùn)行的進(jìn)程。這對于調(diào)試無法在 Visual Studio 中直接運(yùn)行的應(yīng)用程序非常有用,例如 asp.NET Web 應(yīng)用程序或服務(wù)。
要附加調(diào)試器,開發(fā)者需要在“調(diào)試”菜單中選擇“附加到進(jìn)程”選項,然后選擇要調(diào)試的進(jìn)程。成功附加后,開發(fā)者可以使用 Visual Studio 的調(diào)試功能來檢查進(jìn)程狀態(tài)并解決錯誤。
Visual Studio 2010 SP1提供了一系列強(qiáng)大的調(diào)試功能,幫助開發(fā)者高效識別和解決代碼錯誤。這些功能包括斷點(diǎn)、單步執(zhí)行、條件斷點(diǎn)、監(jiān)視、異常處理和調(diào)試器附加。
通過熟練運(yùn)用這些功能,開發(fā)者可以顯著提高代碼質(zhì)量,減少調(diào)試時間,并最終創(chuàng)建更健壯、可靠的應(yīng)用程序。
支持 Windows 8.1 App 開發(fā)Visual Studio 2013 預(yù)覽版提供的工具集非常適合生成利用下一波 Windows 平臺創(chuàng)新 (Windows 8.1) 的新式應(yīng)用程序,同時在所有 Microsoft 平臺上支持設(shè)備和服務(wù)。 支持在 Windows 8.1 預(yù)覽版中開發(fā) Windows 應(yīng)用商店應(yīng)用程序,具體表現(xiàn)在對工具、控件和模板進(jìn)行了許多更新、對于 XAML 應(yīng)用程序支持新近提出的編碼 UI 測試、用于 XAML 和 HTML 應(yīng)用程序的 UI 響應(yīng)能力分析器和能耗探查器、增強(qiáng)了用于 HTML 應(yīng)用程序的內(nèi)存探查工具以及改進(jìn)了與 Windows 應(yīng)用商店的集成。 敏捷項目管理(Agile Portfolio Management) 提供敏捷項目組合管理,提高團(tuán)隊協(xié)作2012已經(jīng)引入了敏捷項目管理功能,在TFS2013中該功能將得到進(jìn)一步改進(jìn)與完善(比如backlog與sprint)。 TFS將更擅長處理流程分解,為不同層級的人員提供不同粒度的視圖backlog,同時支持多個Scrum團(tuán)隊分開管理各自的用例backlog,最后匯總到更高級的backlog。 這意味著TFS將更重視企業(yè)敏捷,相信在新版本中還將提供更完善的敏捷支持。 在得到有效應(yīng)用的情況下,ALM 實踐方法可以消除團(tuán)隊之間的壁壘,使企業(yè)能夠克服挑戰(zhàn),更快速地提供高質(zhì)量的軟件。 采用 ALM 的公司還可以減少浪費(fèi)、縮短周期時間和提高業(yè)務(wù)靈活性,從而受益。 版本控制 在近幾個版本中VS一直在改進(jìn)自身的版本控制功能,包括Team Explorer新增的Connect功能,可以幫助你同時關(guān)注多個團(tuán)隊項目。 新的Team Explorer主頁也更簡潔、明確,在各任務(wù)間切換變得更加方便。 同時,由于眾多用戶反饋,VS2013中將恢復(fù)更改掛起(Pending Changes)功能。 如果你對VS、TFS有什么建議或者意見,也可以考慮向VS開發(fā)團(tuán)隊反饋。 輕量代碼注釋(lightweight code commenting) 與VVS高級版中的代碼審查功能類似,可以通過網(wǎng)絡(luò)進(jìn)行簡單的注釋編程過程 新增代碼信息指示。 在編程過程中,VS2013增強(qiáng)了提示功能,能在你編碼的同時幫你監(jiān)察錯誤,并通過多種指示器進(jìn)行提示。 此外,VS2013中還增加了內(nèi)存診斷功能,對潛在的內(nèi)存泄露問題進(jìn)行提示測試方面 在VS/TFS2012中測試功能已經(jīng)有不少改進(jìn),VS/TFS2013更進(jìn)一步完善了該功能,比如VS2012中引入的基于Web的測試環(huán)境得到了改進(jìn)。 VS2013中還新增了測試用例管理功能,能夠在不開啟專業(yè)測試客戶端的情況下測試計劃進(jìn)行全面管理,包括通過網(wǎng)絡(luò)創(chuàng)建或修改測試計劃、套件以及共享步驟。 自2005版以來,VS已經(jīng)擁有了負(fù)載測試功能,VS2013中的云負(fù)載測試大大簡化了負(fù)載測試的流程。 發(fā)布管理 近些年,產(chǎn)品的發(fā)布流程明顯更加敏捷,因此很多開發(fā)者需要更快、更可靠并且可重復(fù)的自動部署功能。 在剛剛結(jié)束的TechEd大會上,微軟宣布與InCycle Software Inc達(dá)成協(xié)議,將會收購后者旗下的發(fā)布管理工具InRelease。 因此InRelease將會成為TFS原生發(fā)布解決方案。 團(tuán)隊協(xié)作 顧名思義,TFS的核心要務(wù)之一就是改進(jìn)軟件開發(fā)團(tuán)隊內(nèi)部的協(xié)作,TFS2013中將新增“Team Rooms”來進(jìn)一步加強(qiáng)該特性,登記、構(gòu)建、代碼審查等一切操作都將會被記錄下來。 支持代碼評論功能。 整合微軟System Center IT管理平臺除此之外Visual Studio 2013還有團(tuán)隊工作室、身份識別、內(nèi)存轉(zhuǎn)儲分析儀、Git支持等特性,可以看出這次將團(tuán)隊合作作為了一個重要的部分,結(jié)合Windows Azure云平臺進(jìn)行同步協(xié)作。 與Windows系列一樣,Visual Studio也改變了更新節(jié)奏,采取更快的產(chǎn)品迭代,這次距Visual Studio 2012的發(fā)布還不到一年。 定價與許可除了上述所有全新的令人興奮的功能之外,我們很高興通知您,Visual Studio 2013 的定價將與 Visual Studio 2012 保持相同。 另外,由于購買了 Visual Studio 2012 版本,MSDN 訂閱者無需花費(fèi)額外費(fèi)用即可獲得新的好處,包括針對 Microsoft 最新版本(如 Windows 8.1 和 Windows Server 2012 R2)的開發(fā)和測試使用權(quán)、可對 Windows Azure 服務(wù)使用的貨幣信用、針對 Windows Azure 開發(fā)/測試方案的折扣率以及適用于 Windows 應(yīng)用商店、Windows Phone 應(yīng)用商店和 Office 365 Developer 訂閱的開發(fā)人員帳戶。
在將VC6的項目編譯為VS2010時,可能會遇到一些兼容性問題。 報錯exception: 找不到標(biāo)識符通常是由于VS2010不支持或不識別VC6項目中的某些特定代碼或標(biāo)識符。 以下是一些可能的解決方案:1. 確保項目的引用和包含路徑正確設(shè)置:在VS2010中打開項目屬性,確保所有的引用和包含路徑都正確設(shè)置,并且目標(biāo)平臺與項目的需求匹配。 2. 檢查編譯器選項:確保編譯選項與項目需求相匹配。 可能需要調(diào)整編譯器選項來處理VC6與VS2010之間的差異。 3. 更新代碼和標(biāo)識符:檢查代碼中使用的特定標(biāo)識符,如exception,確保其正確引用,并且使用的命名空間和頭文件都正確包含。 4. 使用VC6工具集進(jìn)行編譯:如果上述方法無效,考慮使用VS2010的兼容性模式或者安裝VC6工具集,并使用VC6工具集進(jìn)行編譯。 5. 嘗試升級至更高版本的Visual Studio:如果使用的是過時的Visual Studio版本,考慮升級到更高版本,這樣可能會更好地支持VC6項目。 此外,可以根據(jù)具體的報錯信息來定位問題,檢查相關(guān)代碼和設(shè)置。 如果問題仍然存在,可以提供更詳細(xì)的報錯信息和相關(guān)代碼,以便更準(zhǔn)確地幫助解決。
方法/Cmd+P(或Ctrl/Cmd+E)輸入extinstall[插件關(guān)鍵字/名稱]
方法/慶大仿Cmd+Shift+P(或F1)輸入Extensions,選中InstallExtension然后輸入插件名稱/關(guān)鍵字。
不在插件商店的插件,則可以放置到用仿陪戶目錄下的/extensions文件夾中~重啟VSCode即可生效。
剛剛寫完自己第一個VSCode插件的同學(xué)來啦。
Code的插件將在0.10版中正式提供(應(yīng)該快啦),目前0.9中其實已經(jīng)支持,但是僅提供給有申請的同學(xué).截止0.9.1,插件管理等感覺完成度尚且不高,但核心及調(diào)試體驗應(yīng)該都已經(jīng)做得差不多了.期待正式發(fā)布~。譽(yù)纖
另外再次澄清一個容易被誤解的事情,Code使用了和Atom一樣的殼(Electron),但是本身實現(xiàn)完全不同,沒有直接關(guān)系.
Code背后對應(yīng)的項目Monaco其實早于Atom很久就已經(jīng)出現(xiàn)在了VisualStudioOnline和TypeScriptPlayground上,所以插件自然也是自成體系。
如何在TypeScript中創(chuàng)建自定義類型
介紹
TypeScript是JavaScript語言的擴(kuò)展,它使用JavaScript運(yùn)行時和編譯時類型檢查器。
這種組合允許開發(fā)人員使用完整的JavaScript生態(tài)系統(tǒng)和語言功能,同時還添加可選的靜態(tài)類型檢查、枚舉數(shù)據(jù)類型、類和接口。 這些特性為開發(fā)人員提供了JavaScript動態(tài)特性的靈活性,但也允許更可靠的代碼庫,其中可以在編譯時使用類型信息來檢測可能在運(yùn)行時導(dǎo)致錯誤或其他意外行為的問題。
額外的類型信息還提供了更好的代碼庫文檔,并在文本編輯器中改進(jìn)了IntelliSense(代碼完成、參數(shù)信息和類似的內(nèi)容輔助功能)。 隊友可以準(zhǔn)確地確定任何變量或函數(shù)參數(shù)的預(yù)期類型,而無需通過實現(xiàn)本身。
準(zhǔn)備工作
要遵循本教程,我們將需要:
1)、一個環(huán)境,我們可以在其中執(zhí)行TypeScript程序以跟隨示例。 要在本地計算機(jī)上進(jìn)行設(shè)置,我們將需要以下內(nèi)容。
2)、如果你不想在本地機(jī)器上創(chuàng)建TypeScript環(huán)境,你可以使用官方的TypeScriptPlayground來跟隨。
3)、我們將需要足夠的JavaScript知識,尤其是ES6+語法,例如解構(gòu)、rest運(yùn)算符和導(dǎo)入/導(dǎo)出。 有關(guān)JavaScript的更多主題信息,建議閱讀我們的JavaScript系列教程。
4)、本教程將參考支持TypeScript并顯示內(nèi)聯(lián)錯誤的文本編輯器的各個方面。 這不是使用TypeScript所必需的,但確實可以更多地利用TypeScript功能。 為了獲得這些好處,我們可以使用像VisualStudioCode這樣的文本編輯器,它完全支持開箱即用的TypeScript。 我們也可以在TypeScriptPlayground中嘗試這些好處。
本教程中顯示的所有示例都是使用TypeScript4.2.2版創(chuàng)建的。
創(chuàng)建自定義類型
自定義類型語法
在TypeScript中,創(chuàng)建自定義類型的語法是使用type關(guān)鍵字,后跟類型名稱,然后使用類型屬性分配給{}塊。采取以下措施:
語法類似于對象文字,其中鍵是屬性的名稱,值是該屬性應(yīng)畝敬具有的類型。 這定義了一個Programmer類型,迅遲慎它必須是一個對象,其name鍵保存一個字符串值,并且knownFor鍵保存一個字符串?dāng)?shù)組。
如前面的示例所示,我們可以使用;作為每個屬性之間的分隔符。也可以使用逗號、,或完全省略分隔符,如下所示:
使用自定義類型與使用任何基本類型相同。添加一個雙冒號,然后添加我們的類型名稱:
ada常量現(xiàn)在將通過類型檢查器而不會引發(fā)錯誤。
如果我們在任何完全支持TypeScript的編輯器中編寫此示例,例如在TypeScriptPlayground中,編輯器將建議該對象期望的字段及其類型,如下面的動畫所示:
如果我們使用TSDoc格式(一種流行的TypeScript注釋文檔樣式)向字段添加注釋,則在代碼完旦嘩成中也建議使用它們。使用以下代碼并在注釋中進(jìn)行解釋:
注釋描述現(xiàn)在將與字段建議一起出現(xiàn):
TypeScript編譯器(tsc)將顯示錯誤2322:
如果我們省略了我們的類型所需的任何屬性,如下所示:
TypeScript編譯器將給出錯誤2741:
添加原始類型中未指定的新屬性也會導(dǎo)致錯誤:
在這種情況下,顯示的錯誤是2322:
嵌套自定義類型
我們還可以將自定義類型嵌套在一起。 想象一下,我們有一個Company類型,它有一個符合Person類型的manager字段。 我們可以像這樣創(chuàng)建這些類型:
然后,我們可以像這樣創(chuàng)建一個Company類型的值:
我們可以省略manager常量中的類型,因為它與Person類型具有相同的形狀。 當(dāng)我們使用與manager屬性類型所期望的形狀相同的對象時,TypeScript不會引發(fā)錯誤,即使它沒有明確設(shè)置為Person類型。
以下不會引發(fā)錯誤:
我們甚至可以更進(jìn)一步,直接在company對象字面量中設(shè)置manager:
所有這些場景都是有效的。
如果在支持TypeScript的編輯器中編寫這些示例,我們會發(fā)現(xiàn)編輯器將使用可用的類型信息來記錄自己。對于前面的示例,只要我們打開manager的{}對象文字,編輯器就會期望一個name類型的字符串屬性:
現(xiàn)在,我們已經(jīng)完成了一些使用固定數(shù)量的屬性創(chuàng)建我們自己的自定義類型的示例,接下來,我們將嘗試向我們的類型添加可選屬性。
可選屬性
要將可選屬性添加到類型,請?zhí)砑?屬性的修飾符。使用前面部分中的Programmer類型,通過添加以下突出顯示的字符將knownFor屬性轉(zhuǎn)換為可選屬性:
在這里我們要添加?屬性名稱后的修飾符。這使得TypeScript將此屬性視為可選的,并且在我們省略該屬性時不會引發(fā)錯誤:
這將毫無錯誤地通過。
既然,我們已經(jīng)知道如何向類型添加可選屬性,那么,現(xiàn)在該學(xué)習(xí)如何創(chuàng)建一個可以容納無限數(shù)量的字段的類型了。
可索引類型
在這里,我們使用大括號({})中的類型定義塊創(chuàng)建一個普通類型,然后以[key:typeOfKeys]:typeOfValues的格式添加一個特殊屬性,其中typeOfKeys是該對象的鍵應(yīng)具有的類型,typeOfValues是這些鍵的值應(yīng)該具有的類型。
然后,我們可以像任何其他類型一樣正常使用它:
使用可索引類型,我們可以分配無限數(shù)量的屬性,只要它們與索引簽名匹配,索引簽名是用于描述可索引類型的鍵和值的類型的名稱。 在這種情況下,鍵具有字符串類型,值具有任何類型。
還可以將始終需要的特定屬性添加到可索引類型中,就像使用普通類型一樣。在以下突出顯示的代碼中,我們將狀態(tài)屬性添加到我們的數(shù)據(jù)類型:
這意味著數(shù)據(jù)類型對象必須有一個帶有布爾值的狀態(tài)鍵才能通過類型檢查器。
現(xiàn)在,我們可以創(chuàng)建具有不同數(shù)量元素的對象,我們可以繼續(xù)學(xué)習(xí)TypeScript中的數(shù)組,它可以具有自定義數(shù)量的元素或更多。
創(chuàng)建元素數(shù)量或更多的數(shù)組
使用TypeScript中可用的數(shù)組和元組基本類型,我們可以為應(yīng)該具有最少元素的數(shù)組創(chuàng)建自定義類型。 在本節(jié)中,我們將使用TypeScript剩余運(yùn)算符...來執(zhí)行此操作。
想象一下,我們有一個負(fù)責(zé)合并多個字符串的函數(shù)。 此函數(shù)將采用單個數(shù)組參數(shù)。 這個數(shù)組必須至少有兩個元素,每個元素都應(yīng)該是字符串。 我們可以使用以下內(nèi)容創(chuàng)建這樣的類型:
MergeStringsArray類型利用了這樣一個事實,即我們可以將rest運(yùn)算符與數(shù)組類型一起使用,并將其結(jié)果用作元組的第三個元素。 這意味著前兩個字符串是必需的,但之后的其他字符串元素不是必需的。
如果一個數(shù)組的字符串元素少于兩個,它將是無效的,如下所示:
TypeScript編譯器在檢查此數(shù)組時將給出錯誤2322:
到目前為止,我們已經(jīng)從基本類型的組合中創(chuàng)建了自己的自定義類型。 在下一節(jié)中,我們將通過將兩個或多個自定義類型組合在一起來創(chuàng)建一個新類型。
組合類型
在這里我們將介紹兩種組合類型的方法。 這些將使用聯(lián)合運(yùn)算符傳遞符合一種或另一種類型的任何數(shù)據(jù),并使用交集運(yùn)算符傳遞滿足兩種類型中所有條件的數(shù)據(jù)。
unions是使用|創(chuàng)建的(pipe)運(yùn)算符,它表示可以具有聯(lián)合中任何類型的值。舉個例子:
在此代碼中,ProductCode可以是字符串或數(shù)字。以下代碼將通過類型檢查器:
unions類型可以從任何有效TypeScript類型的聯(lián)合中創(chuàng)建。
Intersections
我們可以使用相交類型來創(chuàng)建一個全新的類型,該類型具有相交在一起的所有類型的所有屬性。
例如,假設(shè)我們有一些公共字段始終出現(xiàn)在API調(diào)用的響應(yīng)中,然后是某些端點(diǎn)的特定字段:
在這種情況下,所有響應(yīng)都將具有status和isValid屬性,但只有用戶響應(yīng)將具有附加的用戶字段。要使用交集類型創(chuàng)建特定API用戶調(diào)用的結(jié)果響應(yīng),請結(jié)合使用StatusResponse和GetUserResponse類型:
ApiGetUserResponse類型將具有StatusResponse中可用的所有屬性以及GetUserResponse中可用的屬性。 這意味著數(shù)據(jù)只有在滿足兩種類型的所有條件時才會通過類型檢查器。 以下示例將起作用:
另一個示例是數(shù)據(jù)庫客戶端為包含連接的查詢返回的行類型。我們將能夠使用交集類型來指定此類查詢的結(jié)果:
稍后,如果我們使用fetchRowsFromDatabase()函數(shù),如下所示:
生成的常量joinedRows必須有一個role屬性和一個name屬性,它們都保存字符串值,以便通過類型檢查器。
使用模板字符串類型
從TypeScript4.1開始,可以使用模板字符串類型創(chuàng)建類型。 這將允許我們創(chuàng)建檢查特定字符串格式的類型,并為我們的TypeScript項目添加更多自定義。
要創(chuàng)建模板字符串類型,我們使用的語法與創(chuàng)建模板字符串文字時使用的語法幾乎相同。 但是,我們將在字符串模板中使用其他類型而不是值。
想象一下,我們想創(chuàng)建一個傳遞所有以get開頭的字符串的類型。我們可以使用模板字符串類型來做到這一點(diǎn):
myString將在此處通過類型檢查器,因為字符串以get開頭,然后是一個附加字符串。
如果我們將無效值傳遞給我們的類型,例如以下invalidStringValue:
TypeScript編譯器會給我們錯誤2322:
使用模板字符串創(chuàng)建類型可幫助我們根據(jù)項目的特定需求自定義類型。 在下一節(jié)中,我們將嘗試類型斷言,它為其他無類型數(shù)據(jù)添加類型。
UsingTypeAssertions
如果我們想讓我們的代碼在這些場景中是類型安全的,我們可以使用類型斷言,這是一種將變量類型更改為另一種類型的方法。 通過在變量后添加asNewType可以實現(xiàn)類型斷言。 這會將變量的類型更改為as關(guān)鍵字之后指定的類型。
舉個例子:
value的類型為any,但是,使用as關(guān)鍵字,此代碼將value強(qiáng)制為string類型。
注意:要斷言TypeA的變量具有TypeB類型,TypeB必須是TypeA的子類型。 幾乎所有的TypeScript類型,除了never,都是any的子類型,包括unknown。
實用程序類型
在前面的部分中,我們查看了從基本類型創(chuàng)建自定義類型的多種方法。 但有時我們不想從頭開始創(chuàng)建一個全新的類型。 有時最好使用現(xiàn)有類型的一些屬性,甚至創(chuàng)建一個與另一種類型具有相同形狀但所有屬性都設(shè)置為可選的新類型。
使用TypeScript提供的現(xiàn)有實用程序類型,所有這些都是可能的。 本節(jié)將介紹其中一些實用程序類型;有關(guān)所有可用的完整列表,請查看TypeScript手冊的實用程序類型部分。
所有實用程序類型都是通用類型,我們可以將其視為接受其他類型作為參數(shù)的類型。 可以通過使用語法向其傳遞類型參數(shù)來識別通用類型。
Record實用程序類型可用于以比使用之前介紹的索引簽名更簡潔的方式創(chuàng)建可索引類型。
在我們的可索引類型示例中,我們具有以下類型:
我們可以使用Record實用程序類型而不是像這樣的可索引類型:
Record泛型的第一個類型參數(shù)是每個鍵的類型。在以下示例中,所有鍵都必須是字符串:
第二個類型參數(shù)是這些鍵的每個值的類型。以下將允許值是任何值:
Omit實用程序類型可用于基于另一種類型創(chuàng)建新類型,同時排除結(jié)果類型中不需要的一些屬性。
假設(shè)我們有以下類型來表示數(shù)據(jù)庫中用戶行的類型:
如果在我們的代碼中,我們要檢索除addressId之外的所有字段,則可以使用Omit創(chuàng)建沒有該字段的新類型:
Omit的第一個參數(shù)是新類型所基于的類型。 第二個是我們要省略的字段。
如果我們在代碼編輯器中將鼠標(biāo)懸停在UserRowWithoutAddressId上,我們會發(fā)現(xiàn)它具有UserRow類型的所有屬性,但我們省略了這些屬性。
我們可以使用字符串聯(lián)合將多個字段傳遞給第二個類型參數(shù)。假設(shè)我們還想省略id字段,我們可以這樣做:
Pick實用程序類型與Omit類型完全相反。 我們無需說出要省略的字段,而是指定要從其他類型使用的字段。
使用我們之前使用的相同UserRow:
假設(shè)我們只需要從數(shù)據(jù)庫行中選擇電子郵件鍵。我們可以像這樣使用Pick創(chuàng)建這樣的類型:
Pick這里的第一個參數(shù)指定了新類型所基于的類型。 第二個是我們想要包含的鍵。
這將等同于以下內(nèi)容:
我們還可以使用字符串聯(lián)合來選擇多個字段:
使用相同的UserRow示例,假設(shè)我們想創(chuàng)建一個新類型,該類型與我們的數(shù)據(jù)庫客戶端可以用來將新數(shù)據(jù)插入用戶表中的對象相匹配,但有一個小細(xì)節(jié):我們的數(shù)據(jù)庫具有所有字段的默認(rèn)值,所以,我們是不需要通過其中任何一個。
為此,我們可以使用Partial實用程序類型來選擇性地包括基本類型的所有字段。
我們現(xiàn)有的類型UserRow具有所需的所有屬性:
要創(chuàng)建所有屬性都是可選的新類型,我們可以使用Partial實用程序類型,如下所示:
這與擁有這樣的UserRowInsert完全相同:
實用程序類型是一個很好的資源,因為它們提供了一種比從TypeScript中的基本類型創(chuàng)建類型更快的方法來構(gòu)建類型。
總結(jié)
創(chuàng)建我們自己的自定義類型來表示我們自己的代碼中使用的數(shù)據(jù)結(jié)構(gòu),可以為我們的項目提供靈活且有用的TypeScript解決方案。 除了從整體上提高我們自己代碼的類型安全性之外,將我們自己的業(yè)務(wù)對象類型化為代碼中的數(shù)據(jù)結(jié)構(gòu)將增加代碼庫的整體文檔,并在與團(tuán)隊成員一起工作時改善我們自己的開發(fā)人員體驗相同的代碼庫。
開發(fā)軟件可以用哪些工具來提高開發(fā)效率?互聯(lián)網(wǎng)真是個神奇的地方,它不僅哪余鬧教你如何寫代碼,還提供了很多有用的工具,在開發(fā)的各個階段幫你節(jié)約寶貴時間。 本文將列出9個有用的在線工具,對任何開發(fā)人員而言,它們都會是得力助手(排名不分先后)。
老實說,盡管我做了很多前端開發(fā)工作,但還是不太擅長使用CSS。 EnjoyCSS是一款非常簡單的工具,是我在困難時期的救星。 它為用戶提供了簡單的UI,讓用戶可以設(shè)計元素,并提供對應(yīng)的CSS輸出。
Prettier是一種代碼格式化程序,支李罩持JavaScript,包括ES2017、JSX、Angular、Vue、Flow和TypeScript等。 它會用符合標(biāo)準(zhǔn)并遵循最佳實踐的樣式替換掉你原來的樣式。 這個方便的工具在我們的IDE中非常流行,但是它也有自己的在線版本,你可以在里面優(yōu)化你的代碼。
從我踏入前端開發(fā)起,Postman就一直是我的必備開發(fā)工具之一。 它能在后端檢查我的端點(diǎn),非常好用。 它的出色表現(xiàn)讓我把它放到了這里。 它包含的端點(diǎn)包括GET、POST、DELETE、OPTIONS和PUT之類。 可以稱之為絕對不能錯過的一款工具。
據(jù)ChidumeNnamdi稱,這是所有用戶最喜歡的在線IDE工具。 主要原因是它將我們最喜歡和最常用的IDE——也就是VisualStudioCode,引入了Web端。
StackBlitz允許你一鍵設(shè)置Angular、React、Ionic、TypeScript、RxJS、Svelte和其他JavaScript框架。 一鍵設(shè)置這個功能意味著開發(fā)者可以在極短的時間內(nèi)開始編碼。 我發(fā)現(xiàn)這款工具非常有用,尤其是在線上嘗試示例代碼段或庫時。 你可能沒有時間從頭開始創(chuàng)建一個新項目來嘗試一項新功能。 有了StackBlitz,你只需不到幾分鐘的時間就可以試用新的NPM軟件包,而無需從頭開始在本地創(chuàng)建項目。
軟件開發(fā)的一項基本原則是代碼可重用性。 這可以減少你的開發(fā)工作,因為你無需從頭開始構(gòu)建每個組件。
這正是所做的。 它使你可以共享可重用的代碼組件和代碼片段,從而減少開銷并加快開發(fā)流程。
它還允許在團(tuán)隊之間共享組件,這使你的團(tuán)隊可以與其他團(tuán)隊更好地協(xié)作。
“組件是你的設(shè)計系統(tǒng)。 共同打造更好的產(chǎn)品。 ”—
正如所提到的,這一組件平臺也適合用作毀悶設(shè)計系統(tǒng)構(gòu)建器。 它能讓你的開發(fā)人員和設(shè)計師團(tuán)隊共同工作,是從頭開始構(gòu)建設(shè)計系統(tǒng)的理想工具。
現(xiàn)在支持React、Vue、Angular、Node等JavaScript框架。
CanIUse是一款在線工具,使用起來非常方便,因為它讓你可以了解所實現(xiàn)的特性是否與你希望使用的瀏覽器目標(biāo)相兼容。
很多開發(fā)者都會遇到一個很鬧心的問題,那就是開發(fā)的應(yīng)用程序中的某些特性在瀏覽器上的支持與兼容問題,明明在這個瀏覽器可以正常使用,換了一個瀏覽器之后就不支持了。 我同樣有這樣的困擾,在遇到過很多次這個問題之后,我開始牢記檢查瀏覽器兼容性的必要步驟。 舉一個例子:我的投資組合項目中的某項特性在Safari瀏覽器上并不受支持。 直到項目部署幾個月后我才知道這件事。
為了看看這款工具是怎么工作的,我們來檢查一下哪些瀏覽器支持WebP圖片格式。
如你所見,目前Safari和IE不支持。 這意味著你應(yīng)該為不兼容的瀏覽器提供一個后備選項。
這個問題可能是由于在編譯過程中,編譯器無法找到某個標(biāo)識符(如函數(shù)、變量等)導(dǎo)致的。 為了解決這個問題,你可以嘗試以下方法:1. 確保你的項目設(shè)置正確。 檢查項目的包含目錄和庫目錄是否正確設(shè)置,以及是否包含了所有必要的頭文件和庫文件。 2. 清理并重新生成項目。 在Visual Studio中,選擇“生成”菜單,然后選擇“清理解決方案”和“重新生成解決方案”。 這將清除之前的編譯結(jié)果,并重新生成項目。 3. 檢查代碼中的拼寫錯誤。 確保所有的標(biāo)識符都正確地拼寫了,沒有遺漏或錯誤的字符。 4. 更新Visual Studio和VC6編譯器。 確保你使用的是最新版本的Visual Studio和VC6編譯器。 有時候,舊版本的編譯器可能無法識別某些新的標(biāo)識符或功能。 5. 如果以上方法都無法解決問題,你可以嘗試在項目中添加缺失的頭文件或庫文件。 這可以通過在項目屬性中手動添加相應(yīng)的路徑來實現(xiàn)。
在尋找內(nèi)存泄漏檢測工具時,有多種實用的解決方案可供選擇。 首先,ccmalloc是一個針對Linux和Solaris平臺的簡單C和C++程序內(nèi)存泄漏調(diào)試庫。 它為開發(fā)者提供了基本的內(nèi)存管理監(jiān)控。
接下來是Dmalloc,一個Debug Malloc Library,專為深入內(nèi)存管理問題設(shè)計,尤其適用于需要高度調(diào)試的場景。 它提供了詳細(xì)的內(nèi)存分配和釋放跟蹤。
Linux上的Electric Fence,由Bruce Perens編寫的malloc()調(diào)試庫,為開發(fā)者提供了額外的內(nèi)存管理保護(hù),幫助識別潛在的內(nèi)存泄漏。
Leaky是Linux下的一款內(nèi)存泄漏檢測程序,專門用于識別和處理內(nèi)存泄漏問題。 它的使用直觀且有效。
LeakTracer則是一款跨平臺工具,適用于Linux、Solaris和HP-UX,特別適用于C++程序的內(nèi)存泄漏跟蹤和分析。
MEMWATCH,由Johan Lindh開發(fā),是一個開源的c語言內(nèi)存錯誤檢測工具,通過gcc預(yù)處理器實現(xiàn),有助于發(fā)現(xiàn)和修復(fù)內(nèi)存問題。
Valgrind是一款廣泛使用的工具,專注于調(diào)試和分析C和C++程序,對于內(nèi)存泄漏和其他性能問題的診斷非常強(qiáng)大。
KCachegrind作為Valgrind的可視化工具,可以深入理解Cachegrind和Calltree生成的性能數(shù)據(jù)。
IBM Rational PurifyPlus是一個全面的工具包,集成了內(nèi)存錯誤和泄漏檢測、性能描述和代碼覆蓋率分析等功能,尤其適用于C/C++、、Java和VB6代碼。
Parasoft Insure++是一款針對C/C++應(yīng)用的運(yùn)行時錯誤檢測工具,能自動檢測內(nèi)存破壞、內(nèi)存泄漏、指針錯誤等,并提供詳細(xì)的診斷信息。
Compuware DevPartner的BoundsChecker Suite是一款針對C++的運(yùn)行錯誤檢測和調(diào)試插件,適用于Microsoft Visual Studio環(huán)境。
Electric Software的GlowCode不僅包括內(nèi)存泄漏檢查,還提供代碼profiler和函數(shù)跟蹤等功能,為C++和開發(fā)者提供全面的錯誤診斷和性能分析。
Compuware的Java Edition則專注于Java應(yīng)用,包含了內(nèi)存檢測、代碼覆蓋率測試等多個功能模塊。
Quest的JProbe專注于Java內(nèi)存泄漏分析,提供深入的Java應(yīng)用程序剖析。
ej-technologies的JProfiler是一款全面的Java分析工具,結(jié)合了CPU、線程和內(nèi)存剖析,適用于J2SE和J2EE應(yīng)用。
最后,BEA的JRockit專門針對Intel平臺進(jìn)行優(yōu)化,用于診斷Java內(nèi)存泄漏,并提供高效的性能分析。
擴(kuò)展資料內(nèi)存泄漏也稱作“存儲滲漏”,用動態(tài)存儲分配函數(shù)動態(tài)開辟的空間,在使用完畢后未釋放,結(jié)果導(dǎo)致一直占據(jù)該內(nèi)存單元。 直到程序結(jié)束。 即所謂內(nèi)存泄漏。
內(nèi)容聲明:
1、本站收錄的內(nèi)容來源于大數(shù)據(jù)收集,版權(quán)歸原網(wǎng)站所有!
2、本站收錄的內(nèi)容若侵害到您的利益,請聯(lián)系我們進(jìn)行刪除處理!
3、本站不接受違法信息,如您發(fā)現(xiàn)違法內(nèi)容,請聯(lián)系我們進(jìn)行舉報處理!
4、本文地址:http://m.hudongshop.com/article/cc372f8345fb07ba2770.html,復(fù)制請保留版權(quán)鏈接!
如何在Windows和Linux系統(tǒng)中使用ARP命令簡介地址解析協(xié)議,ARP,是一個網(wǎng)絡(luò)協(xié)議,用于將Internet協(xié)議,IP,地址轉(zhuǎn)換為與網(wǎng)絡(luò)適配器相對應(yīng)的媒體訪問控制,MAC,地址,ARP命令可用于顯示和修改ARP緩存表中的條目,語法Windows,textarp[,a][,g][,dIP,address][,sIP,addres...。
技術(shù)教程 2024-09-30 18:39:12
歡迎來到本教程,我們將學(xué)習(xí)如何使用Eclipse來配置和管理SVN存儲庫,SVN,Subversion,是一個版本控制系統(tǒng),它允許用戶跟蹤文件和目錄的變化,它是一種流行且功能強(qiáng)大的工具,可以幫助我們保持代碼庫的組織性和協(xié)作性,先決條件安裝EclipseIDE安裝Subversion客戶端,例如ApacheSubversion或Tort...。
本站公告 2024-09-27 23:38:48
數(shù)學(xué)長期以來一直是科學(xué)和技術(shù)進(jìn)步的基礎(chǔ),但傳統(tǒng)數(shù)學(xué)存在一定的局限性,數(shù)棧是一種革命性的數(shù)字系統(tǒng),它超越了這些限制,為數(shù)學(xué)開辟了新的可能性,數(shù)棧的原理數(shù)棧是由數(shù)學(xué)家約翰·康威在1980年代發(fā)明的,是一種基于堆棧的數(shù)學(xué)系統(tǒng),每個數(shù)棧都是一個有序的數(shù)學(xué)對象的序列,這些對象可以是數(shù)字、函數(shù)或其他數(shù)學(xué)結(jié)構(gòu),數(shù)棧的基本操作是壓棧,push,和出棧...。
互聯(lián)網(wǎng)資訊 2024-09-26 01:54:04
引言在Web開發(fā)中,控制瀏覽器歷史記錄對于提供直觀的用戶體驗至關(guān)重要,window.history.back,方法是一個強(qiáng)大的工具,可以輕松地在瀏覽器歷史記錄中回退一頁,從而增強(qiáng)用戶交互,window.history.back,方法window.history.back,方法將當(dāng)前頁面回退到歷史記錄中的前一頁,它沒有參數(shù),并且在...。
最新資訊 2024-09-24 22:41:02
DelphiXE5是一款用于構(gòu)建桌面、移動和網(wǎng)絡(luò)應(yīng)用程序的強(qiáng)大開發(fā)工具,它提供了豐富的功能和特性,使開發(fā)人員能夠創(chuàng)建高性能、可擴(kuò)展且易于維護(hù)的應(yīng)用程序,桌面應(yīng)用程序DelphiXE5非常適合構(gòu)建功能豐富且用戶友好的桌面應(yīng)用程序,它支持各種控件和組件,包括按鈕、文本框、網(wǎng)格和圖表,開發(fā)人員可以使用直觀的拖放界面輕松地創(chuàng)建復(fù)雜的應(yīng)用程序,...。
互聯(lián)網(wǎng)資訊 2024-09-24 09:53:13
簡介在傳統(tǒng)的PHP編程中,代碼是順序執(zhí)行的,這意味著一個請求必須完成才能開始下一個請求,隨著現(xiàn)代Web應(yīng)用程序變得越來越復(fù)雜,需要并行處理任務(wù)以提高性能和吞吐量,PHP中的多線程編程允許開發(fā)人員編寫可同時執(zhí)行多個任務(wù)的應(yīng)用程序,從而充分利用多核處理器和提高并行性,PHP多線程的原理PHP使用多進(jìn)程,POSIX,模型進(jìn)行多線程編程,PO...。
互聯(lián)網(wǎng)資訊 2024-09-23 11:52:02
概述JSP是一種強(qiáng)大的技術(shù),可用于創(chuàng)建動態(tài)網(wǎng)頁,它提供了許多有用的功能,使其非常適合開發(fā)復(fù)雜的網(wǎng)站,本文將探討JSP的一些高級功能,包括自定義標(biāo)簽庫、JavaBeans、會話管理和錯誤處理,自定義標(biāo)簽庫自定義標(biāo)簽庫允許開發(fā)人員創(chuàng)建自己的標(biāo)簽,這些標(biāo)簽可以包含在JSP頁面中,這可以使代碼更模塊化和可重用,要創(chuàng)建自定義標(biāo)簽庫,需要一個XM...。
技術(shù)教程 2024-09-16 10:34:25
使用CSS,使用CSS輕松地控制文本對齊方式,確保跨瀏覽器和設(shè)備的一致性,測試和迭代,對不同的文本對齊方式進(jìn)行測試,以確定最適合您項目的方式,結(jié)論文本對齊是創(chuàng)建整潔和視覺上吸引人的設(shè)計的關(guān)鍵要素,了解不同類型的文本對齊方式及其優(yōu)缺點(diǎn)至關(guān)重要,以便您可以根據(jù)項目的要求和目標(biāo)受眾做出明智的選擇,通過遵循最佳實踐并進(jìn)行測試和迭代,您可以在設(shè)...。
互聯(lián)網(wǎng)資訊 2024-09-14 05:31:57
什么是二級C語言,二級C語言是計算機(jī)編程領(lǐng)域的一個等級考試,旨在測試考生對C語言基本概念的理解和掌握程度,通過二級C語言考試,表明考生具備了使用C語言編寫簡單程序的能力,二級C語言考什么,二級C語言考試內(nèi)容主要包括以下方面,C語言基礎(chǔ)知識,包括數(shù)據(jù)類型、運(yùn)算符、表達(dá)式、流程控制、函數(shù)、數(shù)組等,程序設(shè)計基礎(chǔ),包括算法設(shè)計、數(shù)據(jù)結(jié)構(gòu)、文件...。
本站公告 2024-09-11 10:29:31
引言在軟件開發(fā)的世界中,連接到數(shù)據(jù)庫是至關(guān)重要的,對于使用VB6.0開發(fā)應(yīng)用程序的人來說,了解如何連接和操作數(shù)據(jù)庫是成功項目的關(guān)鍵,連接到數(shù)據(jù)庫在VB6.0中連接到數(shù)據(jù)庫的過程涉及以下步驟,創(chuàng)建ADO連接對象指定連接字符串打開連接創(chuàng)建ADO連接對象在VB6.0中,可以使用ADO,ActiveXDataObjects,庫來連接到數(shù)據(jù)庫,...。
最新資訊 2024-09-10 10:24:27
使用浮動廣告代碼的優(yōu)勢浮動廣告代碼是一種先進(jìn)的技術(shù),可讓您在網(wǎng)站或應(yīng)用程序中展示引人注目、互動性強(qiáng)的廣告,與傳統(tǒng)的橫幅廣告相比,浮動廣告代碼具有以下優(yōu)勢,更高的可見度,浮動廣告代碼可以放置在頁面的顯著位置,從而提高廣告的可見度,更好的參與度,浮動廣告代碼可以包含互動元素,例如號召性用語、視頻和游戲,從而提高用戶參與度,更高的轉(zhuǎn)化率,通...。
技術(shù)教程 2024-09-08 08:32:29
引言在移動互聯(lián)網(wǎng)時代,小程序已成為眾多企業(yè)和個人展示自身業(yè)務(wù)和提供服務(wù)的首選平臺,隨著小程序的普及,對數(shù)據(jù)管理的需求也隨之激增,傳統(tǒng)數(shù)據(jù)庫雖然在數(shù)據(jù)管理方面有著悠久的歷史,但在應(yīng)對小程序的獨(dú)特需求時卻存在諸多限制,小程序云開發(fā)數(shù)據(jù)庫的橫空出世,為小程序開發(fā)者提供了突破傳統(tǒng)數(shù)據(jù)庫局限性,構(gòu)建更加高效、穩(wěn)定、靈活的數(shù)據(jù)管理方案的新選擇,傳...。
技術(shù)教程 2024-09-07 21:04:48