I’ll wait. 😊
Well, Wikipedia will certainly give you the super computer-sciencey and tbh not very useful definition: en.m.wikipedia.org/wiki/Type_syst…
Static types in general (not just design systems) are for large teams. They slow you down too much when you’re little, without accruing any of the benefits.
1. It is a communication mechanism for very large groups of developers.
2. It is a tool that enables refactoring across a very large codebase.
People on small teams can just go ask other people what they’re expecting to be passed into their API, and what the caller will get back.
Those conversations don’t scale as your team grows. Types _automate_ a lot of that communication.
Static types make it WAY easier for code editors to help you with refactoring tasks like renaming methods, changing signatures, etc. In a very large codebase where you only really get to know a tiny piece of it...that assistance is important.
But in a very large codebase, a regression suite will take a looong time to run.
But _for large groups_, static types automate a certain kind of confidence more reliably than the equivalent tests would.
Those are our types.