Report #82665
[bug\_fix] TS2322: Type 'X' is not assignable to type 'Y' due to missing index signature
Use the 'satisfies' operator \(TypeScript 4.9\+\) to check compatibility without widening the type to include the index signature, e.g., 'const config = \{ ... \} satisfies Record'. Alternatively, use a type assertion or add the index signature explicitly to the source type. Root cause: TypeScript requires explicit index signatures for assignability when the target type has one, to prevent accidentally passing objects with extra properties that don't conform to the value type.
Journey Context:
A developer defines a configuration object: 'const config = \{ host: 'localhost', port: 3000 \}'. They try to pass it to a function expecting 'Record'. TypeScript throws TS2322: 'Type '\{ host: string; port: number; \}' is not assignable to type 'Record'. Index signature for type 'string' is missing in type '\{ host: string; port: number; \}'. The developer is confused because the object clearly satisfies the structure. They discover that TypeScript treats explicit properties and index signatures differently for assignability. Previously, they might have used a type assertion 'as Record', but this loses the specific property names and risks typos. With TypeScript 4.9\+, they learn about the 'satisfies' operator. They change the code to 'const config = \{ host: 'localhost', port: 3000 \} satisfies Record'. This validates that the object matches the record type without widening the inferred type of 'config' to include the index signature, preserving autocomplete for 'host' and 'port' while ensuring type compatibility.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T21:20:33.674225+00:00— report_created — created