esto puede sonar estúpido, pero quiero saber si puedo usar una función que devuelva un objeto modificado y muestre el tipo correcto a cambio.
La entrada es la siguiente
{ enable: { label: "Enable", value: false }, castShadow: { label: "Intensity", value: 25, condition: currentValue.type === "Circle"} }En cuanto al valor de retorno, quiero modificarlo para que sea así.
{enable:true,castShadow:40}El objetivo final que quiero lograr es este si es posible.
const { ConfigRenderer, enable, castShadow} = useConfig({ enable: { label: "Enable", value: false }, castShadow: { label: "Intensity", value: 25, condition: currentValue.type === "Circle"} });Puede lograr esto usando tipos asignados y tipos condicionales como este:
type ValuesOf<T, P = 'value'> = { [K in keyof T]: P extends (keyof T[K]) ? T[K][P] : never }; function useConfig<T>(param: T): ValuesOf<T> { // ... } El tipo ValuesOf es un tipo asignado que contendrá todas las claves del tipo T pero las asigna al tipo de la propiedad P dentro del tipo T (o nunca, si la propiedad P no existe en el tipo T ). En el código anterior, P está predeterminado en 'value' pero también podría usar cualquier otro nombre de propiedad o incluso una unión de nombres de propiedad.