Discriminated unions in TypeScript let us combine different types that share a common property called 'kind'. This property tells us which type we have. When we write a function that takes this union type, we check the 'kind' property using a switch or if statement. This way, we know exactly which properties exist and can use them safely. For example, if 'kind' is 'circle', we can use 'radius'. If 'kind' is 'square', we use 'size'. If we get a 'kind' value that we don't expect, the function might not work correctly unless we handle that case. This pattern helps us write clear and safe code when working with different but related types.