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.tset exporter JSON contenant des clés? Ensuite, vous pouvez importer ce fichier partout où vous souhaitez utiliser cette constante.