Typeseedcordv0.10.6
OptionalKeysOf
Extract all optional keys from the given type.
This is useful when you want to create a new type that contains different type values for the optional keys only.
type OptionalKeysOf<Type extends object> = Type extends unknown // For distributing `Type` ? (keyof { [Key in keyof Type as IsOptionalKeyOf<Type, Key> extends false ? never : Key]: never }) & keyof Type // Intersect with `keyof Type` to ensure result of `OptionalKeysOf<Type>` is always assignable to `keyof Type` : nevertype OptionalKeysOf<Type extends object> = Type extends unknown // For distributing `Type` ? (keyof { [Key in keyof Type as IsOptionalKeyOf<Type, Key> extends false ? never : Key]: never }) & keyof Type // Intersect with `keyof Type` to ensure result of `OptionalKeysOf<Type>` is always assignable to `keyof Type` : never