TypeScript 重用字符串文字?

TypeScript resuse string literals?

有没有办法重用字符串文字,所以我不是 copy/pasting?像这样:

export class SendingStates {
    public static sendingStates: 'waiting' | 'sending' | 'sent' | 'error' | 'input-error'
}

interface IProps {
    sendingState: SendingStates.sendingStates
}

基本上,我想访问 'sendingStates' 类型的多个 类 - 谢谢!

您可以使用 enum,但对于这种情况,有一种更好的方法,称为 string literal:

type StringLiteral = '1st literal' | '2nd literal' | 'nth literal';

这会给您编辑器自动完成以及编译时错误。与所有类型一样,您可以将其导出以进一步重用。

您可以使用typeof重用类型:

export class SendingStates {
    public static sendingStates: 'waiting' | 'sending' | 'sent' | 'error' | 'input-error'
}

interface IProps {
    sendingState: typeof SendingStates.sendingStates
}

或者您可以创建类型别名:

type sendingStateType = 'waiting' | 'sending' | 'sent' | 'error' | 'input-error'

export class SendingStates {
    public static sendingStates: sendingStateType
}

interface IProps {
    sendingState: sendingStateType
}

可以通过定义 type:

export type AVAILABLE_SENDING_STATES = 'waiting' | 'sending' | 'sent' | 'error' | 'input-error';

然后在你想要的地方使用它作为类型:

interface IProps {
    sendingState: AVAILABLE_SENDING_STATES
}

您可以使用 Enum.

https://www.typescriptlang.org/docs/handbook/enums.html

enum SENDING_STATES {
    WAITING = "WAITING",
    SENDING = "SENDING"
}

interface IProps {
    sendingState: SENDING_STATES
}