Here's my minimal reproduction:
const br: Record<string, number> = {"b": 0};
const ar: {a: string} = {a: ""};
const brar: Record<string, string> = {...ar, ...br};
console.log(brar);
It seems to me like brar should not be allowed, since it claims to have only values of type string, but contains a number at key "b". Yet the typescript playground seems to accept it. What's going on?
Some changes that seem to cause a type error to arise:
- using
Record<"b", number>forbr, or using no type signature at all, - using
Record<string, string>forar(thoughRecord<"a", string>is fine).
edit: it turns out ar can be inlined, leading to an arguably even more minimal reproduction:
const br: Record<string, number> = {b: 0};
const abr: Record<string, string> = {a: "", ...br};
console.log(abr);