One of the problems with complex interfaces is that they can make mocking test data cumbersome in unit tests. TypeScript has some ways around this.
Check out Utility Types documentation. Here’s a simple example of using the
Omit
utility.
I was dealing with an interface that had a required property that was itself a complex data structure with further nested objects. Kind of like this:
interface Thing {
prop1: string;
prop2: string;
complexData: ComplexData
}
In my test, I didn’t need complexData
at all. So, it would have been really
heavy-handed to mock that data in my unit test. Using the Omit
utility, I was able to create an interface with all properties except the
complexData
property.
type MockThing = Omit<Thing, 'complexData'>;
const thing: MockThing = {
prop1: 'foo',
prop2: 'bar'
}
There’s a bunch of other utilities. See the TypeScript utility types docs for all of them.