Actualizacion maquina principal
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / type-fest / source / require-at-least-one.d.ts
diff --git a/.config/coc/extensions/node_modules/coc-prettier/node_modules/type-fest/source/require-at-least-one.d.ts b/.config/coc/extensions/node_modules/coc-prettier/node_modules/type-fest/source/require-at-least-one.d.ts
new file mode 100644 (file)
index 0000000..337379f
--- /dev/null
@@ -0,0 +1,32 @@
+import {Except} from './except';
+
+/**
+Create a type that requires at least one of the given keys. The remaining keys are kept as is.
+
+@example
+```
+import {RequireAtLeastOne} from 'type-fest';
+
+type Responder = {
+       text?: () => string;
+       json?: () => string;
+
+       secure?: boolean;
+};
+
+const responder: RequireAtLeastOne<Responder, 'text' | 'json'> = {
+       json: () => '{"message": "ok"}',
+       secure: true
+};
+```
+*/
+export type RequireAtLeastOne<ObjectType, KeysType extends keyof ObjectType = keyof ObjectType> =
+       {
+               // For each Key in KeysType make a mapped type
+               [Key in KeysType]: (
+                       // …by picking that Key's type and making it required
+                       Required<Pick<ObjectType, Key>>
+               )
+       }[KeysType]
+       // …then, make intersection types by adding the remaining keys to each mapped type.
+       & Except<ObjectType, KeysType>;