Have you ever needed to synchronize types in your frontend app with the backend API?
If you ever had an API action defined like that in your controller:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
and fetched this data using TypeScript in the following way:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
at some point, you probably also experienced the desynchronization of backend (C#, in our example) and frontend (TypeScript) types definitions. What if someone has changed the C# version of UserViewModel, but no one corrected its TypeScript’s equivalent?
Your TypeScript fetching code will tell nothing about that. There will be no error, even though the fetched data doesn’t match the expected UserViewModel type.
I’ll try to address this issue in this article 🙂 Let’s see how typing API responses with zod can help us here.
I recently needed to write test progress to the console with NUnit. The task we want to solve here is basically the TODO part of this snippet:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I recently deployed my .NET 6 application to Microsoft Azure. The app uses NHibernate for working with SQL Server database. After some time, I started getting an unhandled exception when opening the application:
NHibernate.Exceptions.GenericADOException: could not load an entity:
...
---> Microsoft.Data.SqlClient.SqlException (0x80131904): Database 'myappdb' on server 'myapp.database.windows.net' is not currently available. Please retry the connection later. If the problem persists, contact customer support, and provide them the session tracing ID of '{EB501CF2-2F21-4E28-9042-2B83EEE57B91}'.
The database isnot currently available was very interesting to me. I struggled a bit with solving that, so if you want to know how I did it – continue reading 🙂
I recently struggled for a while with an npm error thrown when executing npm install of some package. The error message was npm ERR! enoent ENOENT: no such file or directory, rename 'D:\\WebApp\\node_modules\\lz-string' -> 'D:\\WebApp\\node_modules.lz-string.DELETE'
Finally, I found a solution and a reason for that issue.
Today I’d like to share with you a very interesting concept in software testing – Assert Object pattern. It makes the Assert part of a test much simpler and more readable. Let’s dive right into it 😉
For the past year I’ve been working on a JavaScript project for my client. We have a mid-size web application. We use React as the web development framework. Few months ago we decided to start migrating to TypeScript.
Today I can say that it was the best decision we could make. TypeScript makes working with JavaScript, which is sometimes surprising and quite hard to understand, so much better experience. However, there were some challenges on this journey. If you want to know what issues we met and how we solved them, but also what huge advantages TypeScript gave us – read on 😉
I will not discuss TypeScript itself in this article. This is a pure recap of challenges and the experience I gained when migrating to TypeScript.
After writing our first Flutter app in less than 30 minutes, today we’re taking a look at Flutter widgets. If you want to know what is a widget in Flutter, what are widgets types and how to use them – this article is for you 🙂
You may know my past affair with Xamarin, which somehow died a natural death. In today’s post, we’re taking a look at Flutter. If you want to know what is Flutter and how to build your first Flutter app in less than 30 minutes (including installation time) – let’s jump right into it 😉
If you’ve ever joined a new project you probably know the excitement of being presented with a brand new source code. As soon as you’re assigned your first tasks the excitement turns into frustration, because it’s not easy to fix this simple bug… Even you’re an experienced developer.
Today I’m trying to address the issue of approaching an unknown codebase. I’ll give you some advices and tricks I’m using to make new code easier and quicker to understand – even without understanding it all 🙂
Continuing to examine new C# 8 features, today we are taking a look at a bit controversial one. It’s a possibility to provide default interface methodsimplementation.
How will this possibility change the way we write C#? Why is it being introduced? I’ll try to address these questions today 🙂
As most websites, this blog uses cookies. This is to make using the blog comfortable 🙂 Staying on this website, you accept the usage of cookies.OKMore info