Estoy usando reaccionar nativo y tratando de pasar uno de los valores de cadena a otro componente.
El type de objeto se ve así:
export const ScannerAction = { move: 'move', inventory: 'inventory', demand: 'demand', supply: 'supply' }; entonces, cuando paso un valor llamado tipo operationType , quiero que sea una de las cadenas: move , inventory , demand o supply .
el componente hijo tendría una interfaz como esta:
interface IIProps { id: string; otherStuff: any; operationType: should be the type of ScannerAction }Podría usar
operationType: 'supply' | 'demand' | 'inventory' | 'move'pero quiero que sea dinámico y editable solo en un lugar. ¿Qué tengo que hacer?
La mejor manera sería usar una enumeración en lugar de un objeto:
enum ScannerAction { move = 'move', inventory = 'inventory', demand = 'demand', supply = 'supply' }; interface IIProps { id: string; otherStuff: any; operationType: ScannerAction } Si desea apegarse a un objeto, puede usar keyof para obtener las claves y luego obtener los valores:
const ScannerAction = { move: 'move', inventory: 'inventory', demand: 'demand', supply: 'supply' } as const; // make this const so that ScannerActionValues becomes a union of all values instead of string type ScannerActionValues = typeof ScannerAction[keyof typeof ScannerAction]; interface IIProps { id: string; otherStuff: any; operationType: ScannerActionValues; }¿Qué pasa con el uso de enumeración? https://www.typescriptlang.org/docs/handbook/enums.html
export enum ScannerAction { move = 'move', inventory = 'inventory', demand = 'demand', supply = 'supply' }uso de la interfaz:
interface IIProps { id: string; otherStuff: any; operationType: ScannerAction }