**TypeScript Version:** Nightly **Search Terms:** generic spread optional property **Code** ```ts interface Test { readonly hi?: string[] } function test<T extends object>(value: T): Test { return { ...value, hi: true } } ``` **Expected behavior:** This should fail to type check. **Actual behavior:** It passes. Interestingly, changing any of the following causes it to fail: * Make the `hi` property non-optional * Replace `T` with `object`. **Related Issues:** Not sure