diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index af7dae030db..3b17c06c0e8 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6917,6 +6917,13 @@ namespace ts { if (isSimpleTypeRelatedTo(source, target, relation, reportErrors ? reportError : undefined)) return Ternary.True; + if (source.flags & TypeFlags.Index) { + // A keyof T is related to a union type containing both string and number + if (maybeTypeOfKind(target, TypeFlags.String) && maybeTypeOfKind(target, TypeFlags.Number)) { + return Ternary.True; + } + } + if (getObjectFlags(source) & ObjectFlags.ObjectLiteral && source.flags & TypeFlags.FreshLiteral) { if (hasExcessProperties(source, target, reportErrors)) { if (reportErrors) {