diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 7132aedb324..b466bf7afb6 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -14744,7 +14744,7 @@ namespace ts { function checkDeclarationInitializer(declaration: VariableLikeDeclaration) { const type = checkExpressionCached(declaration.initializer); return getCombinedNodeFlags(declaration) & NodeFlags.Const || - getCombinedModifierFlags(declaration) & ModifierFlags.Readonly || + getCombinedModifierFlags(declaration) & ModifierFlags.Readonly && !isParameterPropertyDeclaration(declaration) || isTypeAssertion(declaration.initializer) ? type : getWidenedLiteralType(type); } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index bfabb3b1e4a..546416884f1 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -4497,7 +4497,7 @@ namespace ts { } } - export function isParameterPropertyDeclaration(node: ParameterDeclaration): boolean { + export function isParameterPropertyDeclaration(node: Node): boolean { return hasModifier(node, ModifierFlags.ParameterPropertyModifier) && node.parent.kind === SyntaxKind.Constructor && isClassLike(node.parent.parent); }