字符串文字模式

时间:2017-08-01 20:32:38

标签: typescript redux

我见过一些TypeScript和Redux的例子,其中pattern用于声明一个动作类型字符串:

export const CREATE_TASK = 'CREATE_TASK';
export type CREATE_TASK = typeof CREATE_TASK;

我有点理解第二行被称为类型别名,它强制该类型的变量 - 名为CREATE_TASK以包含字符串文字“CREATE_TASK”。我怀疑这相当于本文中提到的“字符串文字类型”:https://www.typescriptlang.org/docs/handbook/advanced-types.html

这是真的吗?有人可以给我一个第2行的解释吗?

1 个答案:

答案 0 :(得分:3)

这里有两件事情,一种类型的定义和一个变量值的定义。

第一行定义了一个变量CREATE_TASK,其值为'CREATE_TASK'。很直接。

第二行定义了一个名为CREATE_TASK的类型,它恰好具有恰好是字符串CREATE_TASK的{​​{1}}变量的类型。这相当于定义如下:

'CREATE_TASK'

除非您不必再次输入字符串,只需使用现有变量来派生类型。

这里的想法是创建一个强类型的常量枚举。通过允许这些常量用作判别式,这有助于区分联合的模式匹配更有效。您可以限制允许的常量,并有编译器支持,以告知您涵盖所有必要的情况。