A form has one value per field and can also have one error per field. A permissions screen can turn the same field names into boolean flags. Mapped types describe those related shapes by visiting each key in a source type. The resulting type stays aligned when that source changes.
You will preserve field names, remove optional and readonly modifiers, and create getter names through key remapping. These are compile-time transformations. JavaScript still needs an implementation that returns the right keys and values. Compiler checks catch misspelled properties and wrong value types; runtime checks catch empty errors, ordering, and accidental value changes. Keep the source type small enough to explain the relationship without hiding it behind a cast.