Búsqueda de sitios web

reactjs - Cómo satisfacer la restricción de Record<string, unknown> con interface


Mi linter dice que no debería usar object como tipo en TS. Sin embargo, una biblioteca que estoy usando pide tipos genéricos que extiendan object.

Por lo tanto, estoy escribiendo un componente genérico con la biblioteca que se ve así:

const Component = <T extends object>(props: CustomProps<T>): React Element => etc. 

Dado que el linter se está quejando, he intentado cambiarlo a

const Component = <T extends Record<string, unknown>>(props: CustomProps<T>): React Element => etc. 

Sin embargo, si luego hago algo como esto:

interface MyInterface {
  something: string;
  goes: number; 
  here: string;
}

const CallerComponent = () => Component<MyInterface> />

TS dice que MyInterface no cumple con la restricción Record<string, unknown>. ¿Hay alguna manera de evitar esto aparte de hacer

interface MyInterface extends Record<string, unknown>

Preferiría no tener que recorrer todo el código agregando esto a cada interfaz, así que sería genial saber si hay una manera de escribirlo donde diga que T definitivamente será un objeto.

Gracias de antemano por cualquier ayuda.

Respuesta #1

Me encontré con el mismo problema y descubrí que puedes declarar tu objeto con type en lugar de interface y eso lo resuelve.

En su caso sería:

type MyInterface = {
  something: string
  goes: number
  here: string
}

Artículos relacionados