Estoy construyendo un juego. Tiene un componente GameResult:
export default function GameResult({ scoresData, onPlayAgain, time, place, }: GameResultProps) { return ( <div className="c-game-result"> <Leaderboard scoresData={scoresData} /> <Stats time={time} place={place} /> <PlayAgain onClick={onPlayAgain} /> </div> );Aquí están las interfaces para accesorios que tienen sus hijos:
interface Props { scoresData: string[]; } interface Props { time: string; place: string; } interface Props { onClick: React.MouseEventHandler<HTMLButtonElement>; } En el componente principal, GameResult, tengo GameResultProps que consta de todas estas interfaces:
interface GameResultProps { scoresData: string[]; onPlayAgain: React.MouseEventHandler<HTMLButtonElement>; time: string; place: string; }Mi pregunta es: ¿Cómo puedo unificar todas las interfaces secundarias en una sola interfaz de accesorios para un padre (GameResult), manteniendo las interfaces separadas para cada hijo?
type GameResultProps = StatsProps & LeaderboardProps & PlayAgainPropsFunciona, sin embargo, parece completamente imposible de mantener. Tengo que saltar a tres archivos para entender qué accesorios debe aceptar GameResult. ¿Hay alguna manera de simplificarlo para que pueda acceder a todos los tipos de accesorios secundarios (scoresData, onPlayAgain, time, place) directamente en el padre (GameResult)?
Podrías usar una transformación de tipo :
En su componente GameResult :
interface GameResultProps { scoresData: string[]; onPlayAgain: React.MouseEventHandler<HTMLButtonElement>; time: string; place: string; } En Stats por ejemplo:
type PropsStats = Pick<GameResultProps, "time" | "place">;Documentos mecanografiados: Tipos de utilidades
Sin embargo, para simplificar, también puede crear un archivo de tipo en el que defina los tres tipos y combínelos en un GameResultProps . Como hiciste en tu publicación.