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
}
有没有办法重用字符串文字,所以我不是 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
}