Tengo un objeto y está escrito.
interface formDataType { tesla: { made: string }, ford: { made: string } } const formData: formDataType = { "tesla": { "made":"2021" }, "ford": { "made": "2022" } }; entonces tengo una función donde su argumento es uno de [string]:{made: string} , ¿cómo puedo usar formDataType? ¿Hay algo como objectOf formDataType ?
demostración https://codesandbox.io/s/react-typescript-forked-cwv9p
Puede crear un tipo para usar en su FormDataType y luego reutilizar ese tipo en su función:
type VehicleDetails = { made: string }; type FormDataType = { ford: VehicleDetails; tesla: VehicleDetails; }; // The following is the same type, written using the Record utility: // type FormDataType = Record<'ford' | 'tesla', VehicleDetails>; const formData: FormDataType = { tesla: {made: '2021'}, ford: {made: '2022'}, }; function doSomethingWithVehicleDetails (details: VehicleDetails) { // console.log(details); }Actualización en respuesta a su comentario :
También puede derivar una unión de todos los tipos de los valores de las claves en su tipo FormData (y si todos son del mismo tipo, la unión será efectivamente ese tipo):
type FormDataType = { ford: { made: string }; tesla: { made: string }; }; type VehicleDetails = FormDataType[keyof FormDataType]; function doSomethingWithVehicleDetails (details: VehicleDetails) { // console.log(details); }