flow
flow copied to clipboard
`Object.freeze` subtyping is unsound
Flow version: 0.103.0
const foo = Object.freeze({a: 1}) // should be read-only
foo.a = 1; // error
const bar: {a: number} = foo // no error?
bar.a = 1;
Expected behavior
const bar: {a: number} = foo // no error?
^ Cannot assign `foo` to `bar` because property `a` is read-only in object type [1] but writable in object type [2].
Actual behavior
No errors!
- Link to Try-Flow or Github repo: https://flow.org/try/#0MYewdgzgLgBAZiEMC8MDyAjAVgU2FAOjgCcccAvHACgG8BDALhgEYBfAShgHouYIALEAFcANgBMYGHDFJ0xAWnAiAngChVCEATooWAbnWhIsDHWJN6TMEIC2U4q12buvMEhzFiIYgH51p4m1dZgN1IA