From 0b25348feb50ea9d3ef787f7bb7e2c4a277c313f Mon Sep 17 00:00:00 2001 From: ViKing-Coder-jpg Date: Thu, 27 Nov 2025 17:47:51 +0530 Subject: [PATCH] Improve satisfies semantics: return never when target type is never --- src/compiler/checker.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 8e5c03560db3e..49a8ad33a5e8c 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -38168,6 +38168,12 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } const errorNode = findAncestor(target.parent, n => n.kind === SyntaxKind.SatisfiesExpression || n.kind === SyntaxKind.JSDocSatisfiesTag); checkTypeAssignableToAndOptionallyElaborate(exprType, targetType, errorNode, expression, Diagnostics.Type_0_does_not_satisfy_the_expected_type_1); + // If the target type is the intrinsic `never` type, treat the whole satisfies-expression + // as having type `never`. This makes patterns like `foo satisfies never` usable with + // exhaustiveness checks such as `assertNever(foo satisfies never)`. + if (targetType === neverType) { + return targetType; + } return exprType; }