paulgray.net

Posts about front end:

Testing for Race Conditions with Redux
November 29, 2017
One type of error that causes bugs is race conditions. They are often hard to detect and reproduce since they only happen in special circumstances. If you’re using redux to store your state, it’s easy to write unit tests that account for these special circumstances. Let’s look at an example. The search results screen Suppose we have a long list of items which...
Why you need keys for collections in React.
July 25, 2017
Keys are important when rendering collections of items in React. They are used under the hood by React to determine what needs to be rendered or re-rendered. React does not render duplicate keys. Let’s consider this array of numbers: const nums = [1, 2, 3, 5, 2]; (Notice the duplicate value, ‘2’) Now...
Types as a convenience, Assumptions.
December 16, 2016
Minimize your assumptions with types. As developers, we make assumptions every day when we write code. I assume that a method in that library that I’m using didn’t change when I bumped the dependency’s patch version. I assume that the data I get back from /api/users is an object, not an array. I assumed that my wife wanted an honest opinion when she asked...
Types as a convenience, Inference.
December 16, 2016
Type-safe doesn’t mean verbose. A common criticism of typed languages is that they are unnecessarily verbose. While that idea may have some merit with languages like Java, features in newer typed languages have come a long way. The Typescript compiler uses a method known as type inference to make type-safe code less cluttered. Type inference occurs when the compiler can determine a...
Types as a convenience, Intro.
November 04, 2016
Bringing types to your UI. As a developer with experience in both type safe and weakly typed languages, I much prefer the former, simply because I enjoy it more. In a series of following blog posts, I’ll attempt to make an argument for types, and make some recommendations of where I think they bring the most benefit. If you’re already sold on...