What do the `-readonly` and `-?` modifiers do in this mapped type, applied to `Result`?type Strip<T> = { -readonly [K in keyof T]-?: T[K] }; type Result = Strip<{ readonly a?: number }>;