Type guards narrow types within conditional blocks. typeof, instanceof, and 'in' operator are built-in guards. Custom type guard functions use 'is' return type. Discriminated unions combine literal types with switch statements for exhaustive checking.