[{"data":1,"prerenderedAt":1742},["Reactive",2],{"navigation":3,"aAII9Cz3yR":204,"tags-jest":397},[4,192,200],{"title":5,"_path":6,"children":7,"icon":191},"Blog","/posts",[8,11,14,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,92,95,98,101,104,107,110,113,116,119,122,125,128,131,134,137,140,143,146,149,152,155,158,161,164,167,170,173,176,179,182,185,188],{"title":9,"_path":10},"Testing your API with REST Client","/posts/testing-your-api-with-rest-client",{"title":12,"_path":13},"HTML templating in Xamarin","/posts/html-templating-in-xamarin",{"title":15,"_path":16},"Goodbye Azure Portal, Welcome Azure CLI","/posts/welcome-azure-cli",{"title":18,"_path":19},"Coming across Gitpod","/posts/gitpod",{"title":21,"_path":22},"Handle token retrieval while querying an API","/posts/delegating-handler",{"title":24,"_path":25},"Clean up your local git branches.","/posts/cleaning-git-branches",{"title":27,"_path":28},"Automate configuration of Teams Tab SSO with PowerShell.","/posts/teams-sso-powershell",{"title":30,"_path":31},"How to do a technology watch? - Part 1","/posts/technology-watch-part1",{"title":33,"_path":34},"How to do a technology watch? - Part 2","/posts/technology-watch-part2",{"title":36,"_path":37},"You almost no longer need Key Vault references for Azure Functions.","/posts/azure-functions-custom-configuration",{"title":39,"_path":40},"How to do a technology watch? - Part 3","/posts/technology-watch-part3",{"title":42,"_path":43},"Forget DevOps, the future is already here!","/posts/devops-future",{"title":45,"_path":46},"Week 9, 2021 - Tips I learned this week","/posts/w09-2021-tips-learned-this-week",{"title":48,"_path":49},"Week 12, 2021 - Tips I learned this week","/posts/w12-2021-tips-learned-this-week",{"title":51,"_path":52},"Week 14, 2021 - Tips I learned this week","/posts/w14-2021-tips-learned-this-week",{"title":54,"_path":55},"Once upon a time in .NET","/posts/once-upon-a-time-in-dotnet",{"title":57,"_path":58},"Install your applications with winget","/posts/winget-import",{"title":60,"_path":61},"Customize your applications when installing them with winget","/posts/winget-override",{"title":63,"_path":64},"Week 22, 2021 - Tips I learned this week","/posts/w22-2021-tips-learned-this-week",{"title":66,"_path":67},"How to connect to an Azure SQL Database from C# using Azure AD","/posts/sqlclient-active-directory-authent",{"title":69,"_path":70},"Producing packages for Windows Package Manager","/posts/wingetcreate",{"title":72,"_path":73},"4 tips about GitHub Actions environment variables and contexts","/posts/github-actions-var-and-context",{"title":75,"_path":76},"AzureWebJobsStorage, the secret you don't need in your Function App.","/posts/azure-functions-without-azurewebjobsstorage",{"title":78,"_path":79},"ASP.NET Core - Lost in configuration","/posts/lost-in-configuration",{"title":81,"_path":82},"Week 39, 2021 - Tips I learned this week","/posts/w39-2021-tips-learned-this-week",{"title":84,"_path":85},"Week 41, 2021 - Tips I learned this week","/posts/w41-2021-tips-learned-this-week",{"title":87,"_path":88},"Migrating and open-sourcing my blog","/posts/migrating-blog",{"title":90,"_path":91},"Week 45, 2021 - Tips I learned this week","/posts/w45-2021-tips-learned-this-week",{"title":93,"_path":94},"Organize your GitHub stars with Astral","/posts/astral",{"title":96,"_path":97},"Pulumi with an Azure Blob Storage backend","/posts/pulumi-azure-backend",{"title":99,"_path":100},"IaC Hot Reload with Pulumi Watch","/posts/pulumi-watch",{"title":102,"_path":103},"Week 2, 2022 - Tips I learned this week","/posts/w02-2022-tips-learned-this-week",{"title":105,"_path":106},"Week 3, 2022 - Tips I learned this week","/posts/w03-2022-tips-learned-this-week",{"title":108,"_path":109},"Week 5, 2022 - Tips I learned this week","/posts/w05-2022-tips-learned-this-week",{"title":111,"_path":112},"How to provision an Azure SQL Database with Active Directory authentication","/posts/sqldatabase-active-directory-authent",{"title":114,"_path":115},"Why will I choose Pulumi over Terraform for my next project?","/posts/pulumi-vs-terraform",{"title":117,"_path":118},"Week 19, 2022 - Tips I learned this week","/posts/w19-2022-tips-learned-this-week",{"title":120,"_path":121},"Week 20, 2022 - Tips I learned this week","/posts/w20-2022-tips-learned-this-week",{"title":123,"_path":124},"Keeping secrets secure when using API Clients","/posts/http-clients-secrets",{"title":126,"_path":127},"What made me want to be a developer?","/posts/be-a-developer",{"title":129,"_path":130},"What can we do when stuck with a programming problem?","/posts/get-unstuck",{"title":132,"_path":133},"How did I automate the setup of my developer Windows laptop?","/posts/automate-developer-machine",{"title":135,"_path":136},"Discussion about API clients","/posts/http-clients",{"title":138,"_path":139},"Week 46, 2022 - Tips I learned this week","/posts/w46-2022-tips-learned-this-week",{"title":141,"_path":142},"When Pulumi met Nuke: a .NET love story","/posts/when-pulumi-met-nuke",{"title":144,"_path":145},"A year of learning and sharing - Dev Retro 2022","/posts/2022-retro",{"title":147,"_path":148},"Perform Dynamic Execution of an npm Package","/posts/pnpm-dlx",{"title":150,"_path":151},"Manage multiple Node.js versions","/posts/pnpm-env",{"title":153,"_path":154},"Introducing the Vue.js CI/CD series","/posts/vuecicd-introduction",{"title":156,"_path":157},"Execute commands using your project dependencies","/posts/pnpm-exec",{"title":159,"_path":160},"Vue.js CI/CD: Continuous Integration","/posts/vuecicd-ci",{"title":162,"_path":163},"Who is using pnpm?","/posts/pnpm-who-is-using",{"title":165,"_path":166},"Create an Azure-Ready GitHub Repository using Pulumi","/posts/azure-ready-github-repository",{"title":168,"_path":169},"Deploying to Azure from Azure DevOps without secrets","/posts/ado-workload-identity-federation",{"title":171,"_path":172},"Effortlessly Configure GitHub Repositories for Azure Deployment via OIDC","/posts/scripting-azure-ready-github-repository",{"title":174,"_path":175},"Playing with the .NET 8 Web API template","/posts/playing-with-dotnet8",{"title":177,"_path":178},"Another year of sharing and learning - Dev Retro 2023","/posts/2023-retro",{"title":180,"_path":181},"Week 4, 2024 - Tips I learned this week","/posts/w04-2024-tips-learned-this-week",{"title":183,"_path":184},"Using dependency injection with Azure .NET SDK","/posts/azure-sdk-di",{"title":186,"_path":187},"Having Fun With IT Event Calendars","/posts/it-event-calendars",{"title":189,"_path":190},"Call your Azure AD B2C protected API with authenticated HTTP requests from your JetBrains IDE","/posts/http-clients-oauth2","i-heroicons-newspaper",{"title":193,"_path":194,"children":195,"icon":199},"Goodies","/goodies",[196],{"title":197,"_path":198},"My Git Cheat Sheet","/goodies/gitcheatsheet","i-heroicons-gift-solid",{"title":201,"_path":202,"icon":203},"About","/about","i-heroicons-user-circle-solid",[205,207,209,211,214,217,220,223,226,229,231,234,237,240,242,244,247,250,253,255,258,261,264,267,270,273,276,279,282,285,287,289,292,294,297,300,303,305,308,310,313,316,319,322,325,327,329,332,335,338,341,344,347,350,353,356,359,361,363,366,369,372,375,377,380,383,385,388,391,394],[206,206],"tooling",[208,208],"vscode",[210,210],"rest",[212,213],"http","HTTP",[215,216],"razor","Razor",[218,219],"xamarin","Xamarin",[221,222],"templating","Templating",[224,225],"azure-cli","Azure CLI",[227,228],"azure","Azure",[230,230],"shell",[232,233],"github","GitHub",[235,236],"asp-net-core","ASP.NET Core",[238,239],"net",".NET",[241,241],"git",[243,243],"nushell",[245,246],"microsoft-teams","Microsoft Teams",[248,249],"powershell","PowerShell",[251,252],"azure-active-directory","Azure Active Directory",[254,254],"learning",[256,257],"azure-functions","Azure Functions",[259,260],"azure-key-vault","Azure Key Vault",[262,263],"configuration","Configuration",[265,266],"devops","DevOps",[268,269],"it","IT",[271,272],"tips-learned-this-week","tips learned this week",[274,275],"windows-terminal","Windows Terminal",[277,278],"azure-pipelines","Azure Pipelines",[280,281],"application-insights","Application Insights",[283,284],"azure-iot","Azure IoT",[286,286],"records",[288,288],"refit",[290,291],"development-box-setup","development box setup",[293,293],"winget",[295,296],"package-manager","package manager",[298,299],"azure-sql-database","Azure SQL Database",[301,302],"azure-sdk","Azure SDK",[304,304],"wingetcreate",[306,307],"github-actions","GitHub Actions",[309,309],"jq",[311,312],"pulumi","Pulumi",[314,315],"iac","IaC",[317,318],"azure-storage","Azure Storage",[320,321],"azure-signalr","Azure SignalR",[323,324],"visio","Visio",[326,326],"csharp",[328,328],"jest",[330,331],"statiq","Statiq",[333,334],"open-source","open source",[336,337],"visual-studio","Visual Studio",[339,340],"vue-js","Vue.js",[342,343],"azure-devops","Azure DevOps",[345,346],"vite","Vite",[348,349],"code-analysis","Code analysis",[351,352],"diagram","Diagram",[354,355],"terraform","Terraform",[357,358],"typescript","TypeScript",[360,360],"thoughts",[362,362],"pnpm",[364,365],"nuke","Nuke",[367,368],"pipelines","Pipelines",[370,371],"cicd","CI/CD",[373,374],"openid-connect","OpenID Connect",[376,376],"security",[378,379],"github-cli","GitHub CLI",[381,382],"microsoft-entra-id","Microsoft Entra ID",[384,384],"advent",[386,387],"finops","FinOps",[389,390],"anglesharp","AngleSharp",[392,393],"oauth2","OAuth2",[395,396],"azure-ad-b2c","Azure AD B2C",[398],{"_path":85,"_dir":399,"_draft":400,"_partial":400,"_locale":401,"title":84,"description":402,"lead":403,"date":404,"image":405,"badge":407,"tags":409,"body":410,"_type":1737,"_id":1738,"_source":1739,"_file":1740,"_extension":1741},"posts",false,"","This week I worked mainly in vs code to do some web development so tips will mostly be about vscode.","vscode, vscode Jest extension, csharp attributes for nullables.","2021-10-18T00:00:00.000Z",{"src":406},"/images/surface_1.jpg",{"label":408},"Tips",[272,208,326,328],{"type":411,"children":412,"toc":1730},"root",[413,420,427,432,444,458,467,479,499,520,541,550,563,568,574,579,588,609,721,729,734,743,788,793,799,804,812,817,841,855,868,1501,1513,1645,1719,1724],{"type":414,"tag":415,"props":416,"children":417},"element","p",{},[418],{"type":419,"value":402},"text",{"type":414,"tag":421,"props":422,"children":424},"h2",{"id":423},"work-on-different-parts-of-your-file-with-the-new-split-in-group-command",[425],{"type":419,"value":426},"Work on different parts of your file with the new \"split in group\" command",{"type":414,"tag":415,"props":428,"children":429},{},[430],{"type":419,"value":431},"When you are developing a component in Vue.js, it is convenient to be able to work at the same time on the HTML template and the TypeScript code which happen to be in the same file.",{"type":414,"tag":415,"props":433,"children":434},{},[435],{"type":414,"tag":436,"props":437,"children":443},"img",{"alt":438,"className":439,"src":442},"Split in Group option in vscode.",[440,441],"rounded-lg","mx-auto","/posts/images/w412021tips_vscode_1.png",[],{"type":414,"tag":415,"props":445,"children":446},{},[447,449,456],{"type":419,"value":448},"The latest release of vscode allows you to do that easily by introducing a new command \"Split in Group\" (the shortcut is ",{"type":414,"tag":450,"props":451,"children":453},"code",{"className":452},[],[454],{"type":419,"value":455},"Ctrl+K Ctrl+Shift+*",{"type":419,"value":457}," on Windows)\" that splits an editor into two sides.",{"type":414,"tag":415,"props":459,"children":460},{},[461],{"type":414,"tag":436,"props":462,"children":466},{"alt":463,"className":464,"src":465},"Vue component split in 2 in vscode.",[440,441],"/posts/images/w412021tips_vscode_2.png",[],{"type":414,"tag":421,"props":468,"children":470},{"id":469},"vscode-jest-a-must-have-extension-when-using-jest",[471,477],{"type":414,"tag":450,"props":472,"children":474},{"className":473},[],[475],{"type":419,"value":476},"vscode-jest",{"type":419,"value":478},", a must-have extension when using Jest",{"type":414,"tag":415,"props":480,"children":481},{},[482,484,490,492,497],{"type":419,"value":483},"Many projects are using ",{"type":414,"tag":450,"props":485,"children":487},{"className":486},[],[488],{"type":419,"value":489},"Jest",{"type":419,"value":491}," as their testing framework for the frontend. But I was quite surprised to see that by default there is no test explorer in vscode to run or debug your ",{"type":414,"tag":450,"props":493,"children":495},{"className":494},[],[496],{"type":419,"value":489},{"type":419,"value":498}," tests. I like the command line but for some things, like debugging a specific test, a UI is way more convenient.",{"type":414,"tag":500,"props":501,"children":503},"callout",{"icon":502},"i-heroicons-chat-bubble-left-20-solid",[504],{"type":414,"tag":415,"props":505,"children":506},{},[507,509,518],{"type":419,"value":508},"From what I understood, there is a native API/UI in vscode that extensions can use to help you managed your tests. You can learn about that ",{"type":414,"tag":510,"props":511,"children":515},"a",{"href":512,"rel":513},"https://code.visualstudio.com/api/extension-guides/testing",[514],"nofollow",[516],{"type":419,"value":517},"here",{"type":419,"value":519},".",{"type":414,"tag":415,"props":521,"children":522},{},[523,525,530,532,539],{"type":419,"value":524},"So we have to install the ",{"type":414,"tag":450,"props":526,"children":528},{"className":527},[],[529],{"type":419,"value":476},{"type":419,"value":531}," ",{"type":414,"tag":510,"props":533,"children":536},{"href":534,"rel":535},"https://github.com/jest-community/vscode-jest",[514],[537],{"type":419,"value":538},"extension",{"type":419,"value":540}," to be able to discover our tests, run them and debug them.",{"type":414,"tag":415,"props":542,"children":543},{},[544],{"type":414,"tag":436,"props":545,"children":549},{"alt":546,"className":547,"src":548},"Jest vscoe extension.",[440,441],"/posts/images/w412021tips_jest_1.png",[],{"type":414,"tag":415,"props":551,"children":552},{},[553,555,561],{"type":419,"value":554},"If you are familiar with full-featured IDEs, you will like this extension that gives you a nice test explorer as well as other interesting features such as automatically running tests when code changes are made (similar to ",{"type":414,"tag":450,"props":556,"children":558},{"className":557},[],[559],{"type":419,"value":560},"Live Unit Testing",{"type":419,"value":562}," in Visual Studio )",{"type":414,"tag":415,"props":564,"children":565},{},[566],{"type":419,"value":567},"That brings me to talking about sharing your vs code extensions with your colleagues.",{"type":414,"tag":421,"props":569,"children":571},{"id":570},"share-to-your-colleagues-the-vscode-extensions-to-use-on-your-project",[572],{"type":419,"value":573},"Share to your colleagues the vscode extensions to use on your project",{"type":414,"tag":415,"props":575,"children":576},{},[577],{"type":419,"value":578},"When you start working on a new project, you often have to find out which extensions your colleagues are using so that you install everything you need to work on the project. If your colleagues are nice, they would have written this kind of information in the README or the wiki of the project. But what if vscode could directly suggest to you which extensions to install when you open the project on your computer.",{"type":414,"tag":415,"props":580,"children":581},{},[582],{"type":414,"tag":436,"props":583,"children":587},{"alt":584,"className":585,"src":586},"Suggested extensions popin in vscode.",[440,441],"/posts/images/w412021tips_vscode_3.png",[],{"type":414,"tag":415,"props":589,"children":590},{},[591,593,599,601,607],{"type":419,"value":592},"As you can see on the screenshot above that is exactly what vscode can do for you if someone has specified the recommended vscode extensions of the workspace in the ",{"type":414,"tag":450,"props":594,"children":596},{"className":595},[],[597],{"type":419,"value":598},"extensions.json",{"type":419,"value":600}," file of the ",{"type":414,"tag":450,"props":602,"children":604},{"className":603},[],[605],{"type":419,"value":606},".vscode",{"type":419,"value":608}," folder.\nHere is an example of such a file:",{"type":414,"tag":610,"props":611,"children":615},"pre",{"className":612,"code":613,"language":614,"meta":401,"style":401},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n    \"recommendations\": [\n        \"orta.vscode-jest\",\n        \"sdras.vue-vscode-extensionpack\"\n    ]\n}\n","json",[616],{"type":414,"tag":450,"props":617,"children":618},{"__ignoreMap":401},[619,631,661,685,703,712],{"type":414,"tag":620,"props":621,"children":624},"span",{"class":622,"line":623},"line",1,[625],{"type":414,"tag":620,"props":626,"children":628},{"style":627},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[629],{"type":419,"value":630},"{\n",{"type":414,"tag":620,"props":632,"children":634},{"class":622,"line":633},2,[635,640,646,651,656],{"type":414,"tag":620,"props":636,"children":637},{"style":627},[638],{"type":419,"value":639},"    \"",{"type":414,"tag":620,"props":641,"children":643},{"style":642},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[644],{"type":419,"value":645},"recommendations",{"type":414,"tag":620,"props":647,"children":648},{"style":627},[649],{"type":419,"value":650},"\"",{"type":414,"tag":620,"props":652,"children":653},{"style":627},[654],{"type":419,"value":655},":",{"type":414,"tag":620,"props":657,"children":658},{"style":627},[659],{"type":419,"value":660}," [\n",{"type":414,"tag":620,"props":662,"children":664},{"class":622,"line":663},3,[665,670,676,680],{"type":414,"tag":620,"props":666,"children":667},{"style":627},[668],{"type":419,"value":669},"        \"",{"type":414,"tag":620,"props":671,"children":673},{"style":672},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[674],{"type":419,"value":675},"orta.vscode-jest",{"type":414,"tag":620,"props":677,"children":678},{"style":627},[679],{"type":419,"value":650},{"type":414,"tag":620,"props":681,"children":682},{"style":627},[683],{"type":419,"value":684},",\n",{"type":414,"tag":620,"props":686,"children":688},{"class":622,"line":687},4,[689,693,698],{"type":414,"tag":620,"props":690,"children":691},{"style":627},[692],{"type":419,"value":669},{"type":414,"tag":620,"props":694,"children":695},{"style":672},[696],{"type":419,"value":697},"sdras.vue-vscode-extensionpack",{"type":414,"tag":620,"props":699,"children":700},{"style":627},[701],{"type":419,"value":702},"\"\n",{"type":414,"tag":620,"props":704,"children":706},{"class":622,"line":705},5,[707],{"type":414,"tag":620,"props":708,"children":709},{"style":627},[710],{"type":419,"value":711},"    ]\n",{"type":414,"tag":620,"props":713,"children":715},{"class":622,"line":714},6,[716],{"type":414,"tag":620,"props":717,"children":718},{"style":627},[719],{"type":419,"value":720},"}\n",{"type":414,"tag":500,"props":722,"children":723},{"icon":502},[724],{"type":414,"tag":415,"props":725,"children":726},{},[727],{"type":419,"value":728},"If you don't want vscode to recommend you some extensions, you can also specify a list of unwanted recommendations in this file.",{"type":414,"tag":415,"props":730,"children":731},{},[732],{"type":419,"value":733},"This is just a list of vscode extensions identifiers. You can find the identifier of an extension on its details page in vscode. You will also find there a button to directly add the extension to your recommended list of extensions.",{"type":414,"tag":415,"props":735,"children":736},{},[737],{"type":414,"tag":436,"props":738,"children":742},{"alt":739,"className":740,"src":741},"Add to workspace recommendation example.",[440,441],"/posts/images/w412021tips_vscode_4.png",[],{"type":414,"tag":500,"props":744,"children":745},{"icon":502},[746],{"type":414,"tag":415,"props":747,"children":748},{},[749,751,756,758,764,766,772,774,779,781,786],{"type":419,"value":750},"If the ",{"type":414,"tag":450,"props":752,"children":754},{"className":753},[],[755],{"type":419,"value":606},{"type":419,"value":757}," folder is in the ",{"type":414,"tag":450,"props":759,"children":761},{"className":760},[],[762],{"type":419,"value":763},"gitignore",{"type":419,"value":765}," of your repository, do not forget to add this line ",{"type":414,"tag":450,"props":767,"children":769},{"className":768},[],[770],{"type":419,"value":771},"!.vscode/extensions.json",{"type":419,"value":773}," to your ",{"type":414,"tag":450,"props":775,"children":777},{"className":776},[],[778],{"type":419,"value":763},{"type":419,"value":780}," file to be able to add your ",{"type":414,"tag":450,"props":782,"children":784},{"className":783},[],[785],{"type":419,"value":598},{"type":419,"value":787}," file in your repository.",{"type":414,"tag":415,"props":789,"children":790},{},[791],{"type":419,"value":792},"And finally, let's talk a little bit about C#.",{"type":414,"tag":421,"props":794,"children":796},{"id":795},"help-the-c-compiler-helps-you-with-nullable-reference-types",[797],{"type":419,"value":798},"Help the C# compiler helps you with nullable reference types.",{"type":414,"tag":415,"props":800,"children":801},{},[802],{"type":419,"value":803},"I am a big fan of enabling nullable on c# projects because I am convinced that it enforces you to write better code.",{"type":414,"tag":500,"props":805,"children":806},{"icon":502},[807],{"type":414,"tag":415,"props":808,"children":809},{},[810],{"type":419,"value":811},"As you can guess I am very happy to see that nullable will be enabled by default on new projects in .NET 6.  I think that warnings as errors for nullable should be set by default as well but that is another story.",{"type":414,"tag":415,"props":813,"children":814},{},[815],{"type":419,"value":816},"However, sometimes the compiler is not enough clever or does not have enough context to know that some code is fine and that it should not raise a warning. When something like that happens, we often solve this by using one of these 2 solutions:",{"type":414,"tag":818,"props":819,"children":820},"ul",{},[821,836],{"type":414,"tag":822,"props":823,"children":824},"li",{},[825,827,834],{"type":419,"value":826},"Use the ",{"type":414,"tag":510,"props":828,"children":831},{"href":829,"rel":830},"https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-forgiving",[514],[832],{"type":419,"value":833},"null forgiving operator",{"type":419,"value":835}," that should not be used in most cases",{"type":414,"tag":822,"props":837,"children":838},{},[839],{"type":419,"value":840},"Use an additional and unnecessary check just to please the compiler",{"type":414,"tag":415,"props":842,"children":843},{},[844,846,853],{"type":419,"value":845},"It's because we often forget that we can add attributes on our code for null-state analysis as it is described in the ",{"type":414,"tag":510,"props":847,"children":850},{"href":848,"rel":849},"https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/attributes/nullable-analysis",[514],[851],{"type":419,"value":852},"documentation",{"type":419,"value":854},". These attributes will provide more information to the compiler which will be able to provide more accurate warnings.",{"type":414,"tag":415,"props":856,"children":857},{},[858,860,866],{"type":419,"value":859},"I recently read a Pull Request where the developer was doing an additional check on the nullability of an out parameter coming from a ",{"type":414,"tag":450,"props":861,"children":863},{"className":862},[],[864],{"type":419,"value":865},"TryGet",{"type":419,"value":867}," method like in the example below.",{"type":414,"tag":610,"props":869,"children":872},{"className":870,"code":871,"language":326,"meta":401,"style":401},"language-csharp shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","string name = \".NET 6\";\nvar myStore = new MyAwesomeStore();\nmyStore.Add(\"WelcomeMessage\", \"  Hello \");\n\nif (myStore.TryGet(\"WelcomeMessage\", out var value) && value is not null)\n{\n    var welcomeMessage = value.TrimStart();\n    string message = welcomeMessage + name;\n}\n\npublic class MyAwesomeStore\n{\n    private IDictionary\u003Cstring, string> _store = new Dictionary\u003Cstring, string>();\n\n    public void Add(string key, string value) => _store.Add(key, value);\n    public bool TryGet(string key, out string? value) => _store.TryGetValue(key, out value);\n}\n",[873],{"type":414,"tag":450,"props":874,"children":875},{"__ignoreMap":401},[876,914,946,1006,1015,1106,1113,1148,1184,1192,1200,1219,1227,1303,1311,1397,1493],{"type":414,"tag":620,"props":877,"children":878},{"class":622,"line":623},[879,884,890,895,900,905,909],{"type":414,"tag":620,"props":880,"children":881},{"style":627},[882],{"type":419,"value":883},"string",{"type":414,"tag":620,"props":885,"children":887},{"style":886},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[888],{"type":419,"value":889}," name",{"type":414,"tag":620,"props":891,"children":892},{"style":627},[893],{"type":419,"value":894}," =",{"type":414,"tag":620,"props":896,"children":897},{"style":627},[898],{"type":419,"value":899}," \"",{"type":414,"tag":620,"props":901,"children":902},{"style":672},[903],{"type":419,"value":904},".NET 6",{"type":414,"tag":620,"props":906,"children":907},{"style":627},[908],{"type":419,"value":650},{"type":414,"tag":620,"props":910,"children":911},{"style":627},[912],{"type":419,"value":913},";\n",{"type":414,"tag":620,"props":915,"children":916},{"class":622,"line":633},[917,922,927,931,936,941],{"type":414,"tag":620,"props":918,"children":919},{"style":886},[920],{"type":419,"value":921},"var",{"type":414,"tag":620,"props":923,"children":924},{"style":886},[925],{"type":419,"value":926}," myStore",{"type":414,"tag":620,"props":928,"children":929},{"style":627},[930],{"type":419,"value":894},{"type":414,"tag":620,"props":932,"children":933},{"style":627},[934],{"type":419,"value":935}," new",{"type":414,"tag":620,"props":937,"children":938},{"style":886},[939],{"type":419,"value":940}," MyAwesomeStore",{"type":414,"tag":620,"props":942,"children":943},{"style":627},[944],{"type":419,"value":945},"();\n",{"type":414,"tag":620,"props":947,"children":948},{"class":622,"line":663},[949,955,959,965,970,974,979,983,988,992,997,1001],{"type":414,"tag":620,"props":950,"children":952},{"style":951},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[953],{"type":419,"value":954},"myStore",{"type":414,"tag":620,"props":956,"children":957},{"style":627},[958],{"type":419,"value":519},{"type":414,"tag":620,"props":960,"children":962},{"style":961},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[963],{"type":419,"value":964},"Add",{"type":414,"tag":620,"props":966,"children":967},{"style":627},[968],{"type":419,"value":969},"(",{"type":414,"tag":620,"props":971,"children":972},{"style":627},[973],{"type":419,"value":650},{"type":414,"tag":620,"props":975,"children":976},{"style":672},[977],{"type":419,"value":978},"WelcomeMessage",{"type":414,"tag":620,"props":980,"children":981},{"style":627},[982],{"type":419,"value":650},{"type":414,"tag":620,"props":984,"children":985},{"style":627},[986],{"type":419,"value":987},",",{"type":414,"tag":620,"props":989,"children":990},{"style":627},[991],{"type":419,"value":899},{"type":414,"tag":620,"props":993,"children":994},{"style":672},[995],{"type":419,"value":996},"  Hello ",{"type":414,"tag":620,"props":998,"children":999},{"style":627},[1000],{"type":419,"value":650},{"type":414,"tag":620,"props":1002,"children":1003},{"style":627},[1004],{"type":419,"value":1005},");\n",{"type":414,"tag":620,"props":1007,"children":1008},{"class":622,"line":687},[1009],{"type":414,"tag":620,"props":1010,"children":1012},{"emptyLinePlaceholder":1011},true,[1013],{"type":419,"value":1014},"\n",{"type":414,"tag":620,"props":1016,"children":1017},{"class":622,"line":705},[1018,1024,1029,1033,1037,1041,1045,1049,1053,1057,1061,1066,1071,1076,1081,1086,1091,1096,1101],{"type":414,"tag":620,"props":1019,"children":1021},{"style":1020},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF;--shiki-light-font-style:italic;--shiki-default-font-style:italic;--shiki-dark-font-style:italic",[1022],{"type":419,"value":1023},"if",{"type":414,"tag":620,"props":1025,"children":1026},{"style":627},[1027],{"type":419,"value":1028}," (",{"type":414,"tag":620,"props":1030,"children":1031},{"style":951},[1032],{"type":419,"value":954},{"type":414,"tag":620,"props":1034,"children":1035},{"style":627},[1036],{"type":419,"value":519},{"type":414,"tag":620,"props":1038,"children":1039},{"style":961},[1040],{"type":419,"value":865},{"type":414,"tag":620,"props":1042,"children":1043},{"style":627},[1044],{"type":419,"value":969},{"type":414,"tag":620,"props":1046,"children":1047},{"style":627},[1048],{"type":419,"value":650},{"type":414,"tag":620,"props":1050,"children":1051},{"style":672},[1052],{"type":419,"value":978},{"type":414,"tag":620,"props":1054,"children":1055},{"style":627},[1056],{"type":419,"value":650},{"type":414,"tag":620,"props":1058,"children":1059},{"style":627},[1060],{"type":419,"value":987},{"type":414,"tag":620,"props":1062,"children":1063},{"style":642},[1064],{"type":419,"value":1065}," out",{"type":414,"tag":620,"props":1067,"children":1068},{"style":886},[1069],{"type":419,"value":1070}," var",{"type":414,"tag":620,"props":1072,"children":1073},{"style":886},[1074],{"type":419,"value":1075}," value",{"type":414,"tag":620,"props":1077,"children":1078},{"style":627},[1079],{"type":419,"value":1080},")",{"type":414,"tag":620,"props":1082,"children":1083},{"style":627},[1084],{"type":419,"value":1085}," &&",{"type":414,"tag":620,"props":1087,"children":1088},{"style":951},[1089],{"type":419,"value":1090}," value ",{"type":414,"tag":620,"props":1092,"children":1093},{"style":627},[1094],{"type":419,"value":1095},"is",{"type":414,"tag":620,"props":1097,"children":1098},{"style":627},[1099],{"type":419,"value":1100}," not",{"type":414,"tag":620,"props":1102,"children":1103},{"style":627},[1104],{"type":419,"value":1105}," null)\n",{"type":414,"tag":620,"props":1107,"children":1108},{"class":622,"line":714},[1109],{"type":414,"tag":620,"props":1110,"children":1111},{"style":627},[1112],{"type":419,"value":630},{"type":414,"tag":620,"props":1114,"children":1116},{"class":622,"line":1115},7,[1117,1122,1127,1131,1135,1139,1144],{"type":414,"tag":620,"props":1118,"children":1119},{"style":886},[1120],{"type":419,"value":1121},"    var",{"type":414,"tag":620,"props":1123,"children":1124},{"style":886},[1125],{"type":419,"value":1126}," welcomeMessage",{"type":414,"tag":620,"props":1128,"children":1129},{"style":627},[1130],{"type":419,"value":894},{"type":414,"tag":620,"props":1132,"children":1133},{"style":951},[1134],{"type":419,"value":1075},{"type":414,"tag":620,"props":1136,"children":1137},{"style":627},[1138],{"type":419,"value":519},{"type":414,"tag":620,"props":1140,"children":1141},{"style":961},[1142],{"type":419,"value":1143},"TrimStart",{"type":414,"tag":620,"props":1145,"children":1146},{"style":627},[1147],{"type":419,"value":945},{"type":414,"tag":620,"props":1149,"children":1151},{"class":622,"line":1150},8,[1152,1157,1162,1166,1171,1176,1180],{"type":414,"tag":620,"props":1153,"children":1154},{"style":627},[1155],{"type":419,"value":1156},"    string",{"type":414,"tag":620,"props":1158,"children":1159},{"style":886},[1160],{"type":419,"value":1161}," message",{"type":414,"tag":620,"props":1163,"children":1164},{"style":627},[1165],{"type":419,"value":894},{"type":414,"tag":620,"props":1167,"children":1168},{"style":951},[1169],{"type":419,"value":1170}," welcomeMessage ",{"type":414,"tag":620,"props":1172,"children":1173},{"style":627},[1174],{"type":419,"value":1175},"+",{"type":414,"tag":620,"props":1177,"children":1178},{"style":951},[1179],{"type":419,"value":889},{"type":414,"tag":620,"props":1181,"children":1182},{"style":627},[1183],{"type":419,"value":913},{"type":414,"tag":620,"props":1185,"children":1187},{"class":622,"line":1186},9,[1188],{"type":414,"tag":620,"props":1189,"children":1190},{"style":627},[1191],{"type":419,"value":720},{"type":414,"tag":620,"props":1193,"children":1195},{"class":622,"line":1194},10,[1196],{"type":414,"tag":620,"props":1197,"children":1198},{"emptyLinePlaceholder":1011},[1199],{"type":419,"value":1014},{"type":414,"tag":620,"props":1201,"children":1203},{"class":622,"line":1202},11,[1204,1209,1214],{"type":414,"tag":620,"props":1205,"children":1206},{"style":642},[1207],{"type":419,"value":1208},"public",{"type":414,"tag":620,"props":1210,"children":1211},{"style":886},[1212],{"type":419,"value":1213}," class",{"type":414,"tag":620,"props":1215,"children":1216},{"style":886},[1217],{"type":419,"value":1218}," MyAwesomeStore\n",{"type":414,"tag":620,"props":1220,"children":1222},{"class":622,"line":1221},12,[1223],{"type":414,"tag":620,"props":1224,"children":1225},{"style":627},[1226],{"type":419,"value":630},{"type":414,"tag":620,"props":1228,"children":1230},{"class":622,"line":1229},13,[1231,1236,1241,1246,1250,1254,1259,1264,1269,1273,1277,1282,1286,1290,1294,1298],{"type":414,"tag":620,"props":1232,"children":1233},{"style":642},[1234],{"type":419,"value":1235},"    private",{"type":414,"tag":620,"props":1237,"children":1238},{"style":886},[1239],{"type":419,"value":1240}," IDictionary",{"type":414,"tag":620,"props":1242,"children":1243},{"style":627},[1244],{"type":419,"value":1245},"\u003C",{"type":414,"tag":620,"props":1247,"children":1248},{"style":627},[1249],{"type":419,"value":883},{"type":414,"tag":620,"props":1251,"children":1252},{"style":627},[1253],{"type":419,"value":987},{"type":414,"tag":620,"props":1255,"children":1256},{"style":627},[1257],{"type":419,"value":1258}," string",{"type":414,"tag":620,"props":1260,"children":1261},{"style":627},[1262],{"type":419,"value":1263},">",{"type":414,"tag":620,"props":1265,"children":1266},{"style":886},[1267],{"type":419,"value":1268}," _store",{"type":414,"tag":620,"props":1270,"children":1271},{"style":627},[1272],{"type":419,"value":894},{"type":414,"tag":620,"props":1274,"children":1275},{"style":627},[1276],{"type":419,"value":935},{"type":414,"tag":620,"props":1278,"children":1279},{"style":886},[1280],{"type":419,"value":1281}," Dictionary",{"type":414,"tag":620,"props":1283,"children":1284},{"style":627},[1285],{"type":419,"value":1245},{"type":414,"tag":620,"props":1287,"children":1288},{"style":627},[1289],{"type":419,"value":883},{"type":414,"tag":620,"props":1291,"children":1292},{"style":627},[1293],{"type":419,"value":987},{"type":414,"tag":620,"props":1295,"children":1296},{"style":627},[1297],{"type":419,"value":1258},{"type":414,"tag":620,"props":1299,"children":1300},{"style":627},[1301],{"type":419,"value":1302},">();\n",{"type":414,"tag":620,"props":1304,"children":1306},{"class":622,"line":1305},14,[1307],{"type":414,"tag":620,"props":1308,"children":1309},{"emptyLinePlaceholder":1011},[1310],{"type":419,"value":1014},{"type":414,"tag":620,"props":1312,"children":1314},{"class":622,"line":1313},15,[1315,1320,1325,1330,1334,1338,1343,1347,1351,1355,1359,1364,1368,1372,1376,1380,1385,1389,1393],{"type":414,"tag":620,"props":1316,"children":1317},{"style":642},[1318],{"type":419,"value":1319},"    public",{"type":414,"tag":620,"props":1321,"children":1322},{"style":627},[1323],{"type":419,"value":1324}," void",{"type":414,"tag":620,"props":1326,"children":1327},{"style":961},[1328],{"type":419,"value":1329}," Add",{"type":414,"tag":620,"props":1331,"children":1332},{"style":627},[1333],{"type":419,"value":969},{"type":414,"tag":620,"props":1335,"children":1336},{"style":627},[1337],{"type":419,"value":883},{"type":414,"tag":620,"props":1339,"children":1340},{"style":886},[1341],{"type":419,"value":1342}," key",{"type":414,"tag":620,"props":1344,"children":1345},{"style":627},[1346],{"type":419,"value":987},{"type":414,"tag":620,"props":1348,"children":1349},{"style":627},[1350],{"type":419,"value":1258},{"type":414,"tag":620,"props":1352,"children":1353},{"style":886},[1354],{"type":419,"value":1075},{"type":414,"tag":620,"props":1356,"children":1357},{"style":627},[1358],{"type":419,"value":1080},{"type":414,"tag":620,"props":1360,"children":1361},{"style":627},[1362],{"type":419,"value":1363}," =>",{"type":414,"tag":620,"props":1365,"children":1366},{"style":951},[1367],{"type":419,"value":1268},{"type":414,"tag":620,"props":1369,"children":1370},{"style":627},[1371],{"type":419,"value":519},{"type":414,"tag":620,"props":1373,"children":1374},{"style":961},[1375],{"type":419,"value":964},{"type":414,"tag":620,"props":1377,"children":1378},{"style":627},[1379],{"type":419,"value":969},{"type":414,"tag":620,"props":1381,"children":1382},{"style":951},[1383],{"type":419,"value":1384},"key",{"type":414,"tag":620,"props":1386,"children":1387},{"style":627},[1388],{"type":419,"value":987},{"type":414,"tag":620,"props":1390,"children":1391},{"style":951},[1392],{"type":419,"value":1075},{"type":414,"tag":620,"props":1394,"children":1395},{"style":627},[1396],{"type":419,"value":1005},{"type":414,"tag":620,"props":1398,"children":1400},{"class":622,"line":1399},16,[1401,1405,1410,1415,1419,1423,1427,1431,1435,1439,1444,1448,1452,1456,1460,1464,1469,1473,1477,1481,1485,1489],{"type":414,"tag":620,"props":1402,"children":1403},{"style":642},[1404],{"type":419,"value":1319},{"type":414,"tag":620,"props":1406,"children":1407},{"style":627},[1408],{"type":419,"value":1409}," bool",{"type":414,"tag":620,"props":1411,"children":1412},{"style":961},[1413],{"type":419,"value":1414}," TryGet",{"type":414,"tag":620,"props":1416,"children":1417},{"style":627},[1418],{"type":419,"value":969},{"type":414,"tag":620,"props":1420,"children":1421},{"style":627},[1422],{"type":419,"value":883},{"type":414,"tag":620,"props":1424,"children":1425},{"style":886},[1426],{"type":419,"value":1342},{"type":414,"tag":620,"props":1428,"children":1429},{"style":627},[1430],{"type":419,"value":987},{"type":414,"tag":620,"props":1432,"children":1433},{"style":642},[1434],{"type":419,"value":1065},{"type":414,"tag":620,"props":1436,"children":1437},{"style":627},[1438],{"type":419,"value":1258},{"type":414,"tag":620,"props":1440,"children":1441},{"style":627},[1442],{"type":419,"value":1443},"?",{"type":414,"tag":620,"props":1445,"children":1446},{"style":886},[1447],{"type":419,"value":1075},{"type":414,"tag":620,"props":1449,"children":1450},{"style":627},[1451],{"type":419,"value":1080},{"type":414,"tag":620,"props":1453,"children":1454},{"style":627},[1455],{"type":419,"value":1363},{"type":414,"tag":620,"props":1457,"children":1458},{"style":951},[1459],{"type":419,"value":1268},{"type":414,"tag":620,"props":1461,"children":1462},{"style":627},[1463],{"type":419,"value":519},{"type":414,"tag":620,"props":1465,"children":1466},{"style":961},[1467],{"type":419,"value":1468},"TryGetValue",{"type":414,"tag":620,"props":1470,"children":1471},{"style":627},[1472],{"type":419,"value":969},{"type":414,"tag":620,"props":1474,"children":1475},{"style":951},[1476],{"type":419,"value":1384},{"type":414,"tag":620,"props":1478,"children":1479},{"style":627},[1480],{"type":419,"value":987},{"type":414,"tag":620,"props":1482,"children":1483},{"style":642},[1484],{"type":419,"value":1065},{"type":414,"tag":620,"props":1486,"children":1487},{"style":951},[1488],{"type":419,"value":1075},{"type":414,"tag":620,"props":1490,"children":1491},{"style":627},[1492],{"type":419,"value":1005},{"type":414,"tag":620,"props":1494,"children":1496},{"class":622,"line":1495},17,[1497],{"type":414,"tag":620,"props":1498,"children":1499},{"style":627},[1500],{"type":419,"value":720},{"type":414,"tag":415,"props":1502,"children":1503},{},[1504,1506,1511],{"type":419,"value":1505},"But if we annotate correctly the ",{"type":414,"tag":450,"props":1507,"children":1509},{"className":1508},[],[1510],{"type":419,"value":865},{"type":419,"value":1512}," method we don't need this check:",{"type":414,"tag":610,"props":1514,"children":1516},{"className":870,"code":1515,"language":326,"meta":401,"style":401},"public bool TryGet(string key, [NotNullWhen(returnValue: true)] out string? value) => _store.TryGetValue(key, out value);\n",[1517],{"type":414,"tag":450,"props":1518,"children":1519},{"__ignoreMap":401},[1520],{"type":414,"tag":620,"props":1521,"children":1522},{"class":622,"line":623},[1523,1527,1531,1535,1539,1543,1547,1551,1556,1561,1565,1570,1574,1580,1585,1589,1593,1597,1601,1605,1609,1613,1617,1621,1625,1629,1633,1637,1641],{"type":414,"tag":620,"props":1524,"children":1525},{"style":642},[1526],{"type":419,"value":1208},{"type":414,"tag":620,"props":1528,"children":1529},{"style":627},[1530],{"type":419,"value":1409},{"type":414,"tag":620,"props":1532,"children":1533},{"style":961},[1534],{"type":419,"value":1414},{"type":414,"tag":620,"props":1536,"children":1537},{"style":627},[1538],{"type":419,"value":969},{"type":414,"tag":620,"props":1540,"children":1541},{"style":627},[1542],{"type":419,"value":883},{"type":414,"tag":620,"props":1544,"children":1545},{"style":886},[1546],{"type":419,"value":1342},{"type":414,"tag":620,"props":1548,"children":1549},{"style":627},[1550],{"type":419,"value":987},{"type":414,"tag":620,"props":1552,"children":1553},{"style":627},[1554],{"type":419,"value":1555}," [",{"type":414,"tag":620,"props":1557,"children":1558},{"style":886},[1559],{"type":419,"value":1560},"NotNullWhen",{"type":414,"tag":620,"props":1562,"children":1563},{"style":627},[1564],{"type":419,"value":969},{"type":414,"tag":620,"props":1566,"children":1567},{"style":951},[1568],{"type":419,"value":1569},"returnValue",{"type":414,"tag":620,"props":1571,"children":1572},{"style":627},[1573],{"type":419,"value":655},{"type":414,"tag":620,"props":1575,"children":1577},{"style":1576},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1578],{"type":419,"value":1579}," true",{"type":414,"tag":620,"props":1581,"children":1582},{"style":627},[1583],{"type":419,"value":1584},")]",{"type":414,"tag":620,"props":1586,"children":1587},{"style":642},[1588],{"type":419,"value":1065},{"type":414,"tag":620,"props":1590,"children":1591},{"style":627},[1592],{"type":419,"value":1258},{"type":414,"tag":620,"props":1594,"children":1595},{"style":627},[1596],{"type":419,"value":1443},{"type":414,"tag":620,"props":1598,"children":1599},{"style":886},[1600],{"type":419,"value":1075},{"type":414,"tag":620,"props":1602,"children":1603},{"style":627},[1604],{"type":419,"value":1080},{"type":414,"tag":620,"props":1606,"children":1607},{"style":627},[1608],{"type":419,"value":1363},{"type":414,"tag":620,"props":1610,"children":1611},{"style":951},[1612],{"type":419,"value":1268},{"type":414,"tag":620,"props":1614,"children":1615},{"style":627},[1616],{"type":419,"value":519},{"type":414,"tag":620,"props":1618,"children":1619},{"style":961},[1620],{"type":419,"value":1468},{"type":414,"tag":620,"props":1622,"children":1623},{"style":627},[1624],{"type":419,"value":969},{"type":414,"tag":620,"props":1626,"children":1627},{"style":951},[1628],{"type":419,"value":1384},{"type":414,"tag":620,"props":1630,"children":1631},{"style":627},[1632],{"type":419,"value":987},{"type":414,"tag":620,"props":1634,"children":1635},{"style":642},[1636],{"type":419,"value":1065},{"type":414,"tag":620,"props":1638,"children":1639},{"style":951},[1640],{"type":419,"value":1075},{"type":414,"tag":620,"props":1642,"children":1643},{"style":627},[1644],{"type":419,"value":1005},{"type":414,"tag":610,"props":1646,"children":1648},{"className":870,"code":1647,"language":326,"meta":401,"style":401},"if (myStore.TryGet(\"WelcomeMessage\", out var value))\n{\n",[1649],{"type":414,"tag":450,"props":1650,"children":1651},{"__ignoreMap":401},[1652,1712],{"type":414,"tag":620,"props":1653,"children":1654},{"class":622,"line":623},[1655,1659,1663,1667,1671,1675,1679,1683,1687,1691,1695,1699,1703,1707],{"type":414,"tag":620,"props":1656,"children":1657},{"style":1020},[1658],{"type":419,"value":1023},{"type":414,"tag":620,"props":1660,"children":1661},{"style":627},[1662],{"type":419,"value":1028},{"type":414,"tag":620,"props":1664,"children":1665},{"style":951},[1666],{"type":419,"value":954},{"type":414,"tag":620,"props":1668,"children":1669},{"style":627},[1670],{"type":419,"value":519},{"type":414,"tag":620,"props":1672,"children":1673},{"style":961},[1674],{"type":419,"value":865},{"type":414,"tag":620,"props":1676,"children":1677},{"style":627},[1678],{"type":419,"value":969},{"type":414,"tag":620,"props":1680,"children":1681},{"style":627},[1682],{"type":419,"value":650},{"type":414,"tag":620,"props":1684,"children":1685},{"style":672},[1686],{"type":419,"value":978},{"type":414,"tag":620,"props":1688,"children":1689},{"style":627},[1690],{"type":419,"value":650},{"type":414,"tag":620,"props":1692,"children":1693},{"style":627},[1694],{"type":419,"value":987},{"type":414,"tag":620,"props":1696,"children":1697},{"style":642},[1698],{"type":419,"value":1065},{"type":414,"tag":620,"props":1700,"children":1701},{"style":886},[1702],{"type":419,"value":1070},{"type":414,"tag":620,"props":1704,"children":1705},{"style":886},[1706],{"type":419,"value":1075},{"type":414,"tag":620,"props":1708,"children":1709},{"style":627},[1710],{"type":419,"value":1711},"))\n",{"type":414,"tag":620,"props":1713,"children":1714},{"class":622,"line":633},[1715],{"type":414,"tag":620,"props":1716,"children":1717},{"style":627},[1718],{"type":419,"value":630},{"type":414,"tag":415,"props":1720,"children":1721},{},[1722],{"type":419,"value":1723},"And that's it for this week, happy learning!",{"type":414,"tag":1725,"props":1726,"children":1727},"style",{},[1728],{"type":419,"value":1729},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":401,"searchDepth":633,"depth":633,"links":1731},[1732,1733,1735,1736],{"id":423,"depth":633,"text":426},{"id":469,"depth":633,"text":1734},"vscode-jest, a must-have extension when using Jest",{"id":570,"depth":633,"text":573},{"id":795,"depth":633,"text":798},"markdown","content:1.posts:26.w41-2021-tips-learned-this-week.md","content","1.posts/26.w41-2021-tips-learned-this-week.md","md",1716749600807]