Existe-t-il un moyen de réutiliser des chaînes littérales pour ne pas copier / coller? quelque chose comme ceci:
export class SendingStates { public static sendingStates: 'waiting' | 'sending' | 'sent' | 'error' | 'input-error' } interface IProps { sendingState: SendingStates.sendingStates }
En gros, je veux avoir accès au type 'sendStates' dans plusieurs classes - merci!
4 Réponses :
Vous pouvez utiliser un enum
mais il existe un bien meilleur moyen pour ce cas appelé chaîne littérale
:
type StringLiteral = '1er littéral' | «2e littéral» | 'nième littéral';
Cela vous donnera la saisie semi-automatique de l'éditeur ainsi que des erreurs de compilation. Comme pour tous les types, vous pouvez l'exporter pour une réutilisation ultérieure.
Vous pouvez utiliser typeof
pour réutiliser le type:
type sendingStateType = 'waiting' | 'sending' | 'sent' | 'error' | 'input-error' export class SendingStates { public static sendingStates: sendingStateType } interface IProps { sendingState: sendingStateType }
Ou vous pouvez créer un alias de type:
export class SendingStates { public static sendingStates: 'waiting' | 'sending' | 'sent' | 'error' | 'input-error' } interface IProps { sendingState: typeof SendingStates.sendingStates }
le type
sera également exporté pour l'exposer à d'autres fichiers.
C'est possible en définissant un type
:
interface IProps { sendingState: AVAILABLE_SENDING_STATES }
Ensuite, utilisez-le où vous voulez comme type:
export type AVAILABLE_SENDING_STATES = 'waiting' | 'sending' | 'sent' | 'error' | 'input-error';
Vous pouvez utiliser Enum
.
https: //www.typescriptlang.org/docs/handbook/enums.html
enum SENDING_STATES { WAITING = "WAITING", SENDING = "SENDING" } interface IProps { sendingState: SENDING_STATES }
Vous ne pouvez pas créer un fichier
AppConstants.ts
et exporter JSON contenant des clés? Ensuite, vous pouvez importer ce fichier partout où vous souhaitez utiliser cette constante.