Properly preserve modifiers in homomorphic mapped types with 'as' clauses (#40633)

* Use original property name to fetch source property for modifiers

* Add regression test

* Accept new baselines
This commit is contained in:
Anders Hejlsberg
2020-09-19 06:12:39 -10:00
committed by GitHub
parent 8cdf5a20d9
commit 17c7c261d4
5 changed files with 93 additions and 1 deletions

View File

@@ -10458,7 +10458,7 @@ namespace ts {
existingProp.keyType = getUnionType([existingProp.keyType, keyType]);
}
else {
const modifiersProp = getPropertyOfType(modifiersType, propName);
const modifiersProp = isTypeUsableAsPropertyName(keyType) ? getPropertyOfType(modifiersType, getPropertyNameFromType(keyType)) : undefined;
const isOptional = !!(templateModifiers & MappedTypeModifiers.IncludeOptional ||
!(templateModifiers & MappedTypeModifiers.ExcludeOptional) && modifiersProp && modifiersProp.flags & SymbolFlags.Optional);
const isReadonly = !!(templateModifiers & MappedTypeModifiers.IncludeReadonly ||