TS4104
TypeScriptERRORNotableDeclarationHIGH confidence
The type 'X' is 'readonly' and cannot be assigned to the mutable type 'X'.
Production Risk
Build will fail; resolve before shipping.
What this means
A declaration emit error (TS4104): The type 'X' is 'readonly' and cannot be assigned to the mutable type 'X'.. This diagnostic is emitted by the TypeScript compiler when the type 'X' is 'readonly' and cannot be assigned to the mutable type 'X'..
Why it happens
- 1Attempting to modify a property or variable declared as readonly
How to reproduce
TypeScript compiler reports TS4104 during type checking.
trigger — this will error
trigger — this will error
// Triggers TS4104 // The type 'X' is 'readonly' and cannot be assigned to the mutable type 'X'.
expected output
error TS4104: The type 'X' is 'readonly' and cannot be assigned to the mutable type 'X'.
Fix
Remove the readonly modifier or create a mutable copy
WHEN When you need to mutate a readonly property
Remove the readonly modifier or create a mutable copy
// Create a mutable copy
const mutable = { ...readonlyObject };
mutable.property = newValue;
// Or remove readonly from the type definition
type MyType = { property: string }; // not readonlyWhy this works
readonly properties enforce immutability at the type level; create a copy to modify.
Sources
Official documentation ↗
TypeScript Compiler Diagnostics
Content generated with AI assistance and reviewed for accuracy. Found an error? hello@errcodes.dev