From 18e5656d83a6d6adbb12e6a735cec104972a2882 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 29 Apr 2019 16:34:08 -0700 Subject: [PATCH] Remove Readonly -> any callout --- src/compiler/checker.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d5418a1869a07..c28d63dec766f 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11205,11 +11205,7 @@ namespace ts { return mapType(mappedTypeVariable, t => { if (t.flags & (TypeFlags.AnyOrUnknown | TypeFlags.InstantiableNonPrimitive | TypeFlags.Object | TypeFlags.Intersection) && t !== wildcardType && t !== errorType) { const replacementMapper = createReplacementMapper(typeVariable, t, mapper); - // The first rule exists such that `Readonly` is simply `any`, which is what most people think it will resolve to. - // Without the extra special callout, it actually instantiates to `{readonly [index: string]: any}` which has a bunch of - // assignability quirks to do with index signatures - most notably it no longer provides _every possible explicit property_. - return isTypeAny(t) && getTemplateTypeFromMappedType(type) === getIndexedAccessType(typeVariable, getTypeParameterFromMappedType(type)) ? t : - isArrayType(t) ? instantiateMappedArrayType(t, type, replacementMapper) : + return isArrayType(t) ? instantiateMappedArrayType(t, type, replacementMapper) : isTupleType(t) ? instantiateMappedTupleType(t, type, replacementMapper) : instantiateAnonymousType(type, replacementMapper); }