If an object is run through the decoder at runtime, there should be a way to configure the decoder to throw an error if the decoded object has extra properties not defined on the original decoder.
For example, given the following decoder:
interface MyType {
  myProperty?: string;
}
const MyTypeDecoder: Decoder<MyType> = object({
  myProperty: optional(string());
});There should be an additional combinator to make the decoder throw an error given the following input:
const myTypeRuntimeValue: MyType = {
  myProperty: "someValue",
  myOtherProperty: "This one isn't defined on the interface"
};
// I want this to throw an error because myTypeRuntimeValue has
// an additional property not defined in the interface
const decoded = MyTypeDecoder.runWithException(myTypeRuntimeValue);The combinator could be something like exact(value), e.g.
interface MyType {
  myProperty?: string;
}
const MyTypeDecoder: Decoder<MyType> = exact(object({
  myProperty: optional(string());
}));