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
}
