From 9f36ce85bed4d7a33a947725584e23fad776951e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 19 Feb 2024 19:22:07 +0100 Subject: [PATCH] Extend work --- src/util/extend.ts | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/util/extend.ts b/src/util/extend.ts index d2a3824..e4a1460 100644 --- a/src/util/extend.ts +++ b/src/util/extend.ts @@ -21,7 +21,11 @@ import { CommonKeys } from "." export type Extend = ( - T extends [infer Super, infer Self, ...infer Rest extends object[]] + T extends [ + infer Super, + infer Self, + ...infer Rest extends object[] + ] ? Pick> extends Pick> ? Extend<[ Omit> & Self, @@ -34,12 +38,22 @@ export type Extend = ( ) export type Extendable = ( - T extends [infer Super, infer Self, ...infer Rest extends object[]] + T extends [ + infer Super extends object, + infer Self extends object, + ...infer Rest extends object[], + ] ? Pick> extends Pick> ? Extendable<[ - Omit> & Self, + Super & Self, ...Rest, ]> : false : true ) + +export type NonExtendableKeys = ( + Extendable extends false + ? {} + : never +)