From add9765c033de773534e875a2f897cb129cd0d08 Mon Sep 17 00:00:00 2001 From: Carbon Copy Date: Sat, 12 Oct 2019 11:36:47 +1100 Subject: [PATCH 1/3] Fix: Use KnownProps to ignore index signature --- index.d.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/index.d.ts b/index.d.ts index 8ab98fa..b12c609 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,7 +1,15 @@ import * as React from 'react'; import {default as tippyCore, Instance, Props, Plugin} from 'tippy.js'; -export interface TippyProps extends Omit, 'content'> { +type KnownKeys = { + [K in keyof T]: string extends K ? never : number extends K ? never : K; +} extends {[_ in keyof T]: infer U} + ? U + : never; + +export type KnownProps = Pick>; + +export interface TippyProps extends Omit, 'content'> { content: React.ReactChild | React.ReactChild[]; children: React.ReactElement; visible?: boolean; @@ -16,7 +24,7 @@ export default Tippy; export const tippy: typeof tippyCore; -export interface TippySingletonProps extends Partial { +export interface TippySingletonProps extends Partial { children: Array>; className?: string; plugins?: Plugin[]; From 1461fc02e10d18afc5612ca992493f6a39a28ba3 Mon Sep 17 00:00:00 2001 From: Carbon Copy Date: Sat, 12 Oct 2019 11:42:17 +1100 Subject: [PATCH 2/3] Add index signature to extended types Allows backwards-compatibility for typeless plugin props --- index.d.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.d.ts b/index.d.ts index b12c609..4ef2464 100644 --- a/index.d.ts +++ b/index.d.ts @@ -17,6 +17,7 @@ export interface TippyProps extends Omit, 'content'> { className?: string; plugins?: Plugin[]; singleton?: (instance: Instance) => void; + [key: string]: any; } declare const Tippy: React.ForwardRefExoticComponent; @@ -28,6 +29,7 @@ export interface TippySingletonProps extends Partial { children: Array>; className?: string; plugins?: Plugin[]; + [key: string]: any; } export const TippySingleton: React.FunctionComponent; From 6244aec0ff103150b05b11b1bff3db0f759435fc Mon Sep 17 00:00:00 2001 From: Carbon Copy Date: Sat, 12 Oct 2019 11:56:34 +1100 Subject: [PATCH 3/3] Use KnownSingletonProps for useSingleton() types --- index.d.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index 4ef2464..a1e0fd9 100644 --- a/index.d.ts +++ b/index.d.ts @@ -34,7 +34,15 @@ export interface TippySingletonProps extends Partial { export const TippySingleton: React.FunctionComponent; -export type UseSingletonProps = Omit; +type KnownSingletonProps = Pick< + TippySingletonProps, + KnownKeys +>; + +export interface UseSingletonProps + extends Omit { + [key: string]: any; +} export const useSingleton: ( props?: UseSingletonProps,