Typescript 字符串文字模式

Typescript 字符串文字模式,typescript,redux,Typescript,Redux,我见过一些TypeScript和Redux示例,其中使用以下内容声明操作类型字符串: export const CREATE_TASK = 'CREATE_TASK'; export type CREATE_TASK = typeof CREATE_TASK; 我知道第二行称为类型别名,它强制该类型的变量(名为CREATE_TASK)包含字符串文字“CREATE_TASK”。我怀疑这相当于本文中提到的“字符串文字类型”: 这是真的吗?有人能给我解释一下第2行吗?这里有两件事在起作用,类型的定义

我见过一些TypeScript和Redux示例,其中使用以下内容声明操作类型字符串:

export const CREATE_TASK = 'CREATE_TASK';
export type CREATE_TASK = typeof CREATE_TASK;
我知道第二行称为类型别名,它强制该类型的变量(名为CREATE_TASK)包含字符串文字“CREATE_TASK”。我怀疑这相当于本文中提到的“字符串文字类型”:


这是真的吗?有人能给我解释一下第2行吗?

这里有两件事在起作用,类型的定义和变量值的定义

第一行定义了一个变量
CREATE\u TASK
,其值为
'CREATE\u TASK'
。非常直截了当

第二行定义了一个名为
CREATE\u TASK
的类型,该类型恰好具有
CREATE\u TASK
变量的类型,该变量恰好是字符串
“CREATE\u TASK”
。这相当于这样定义:

export type CREATE_TASK = 'CREATE_TASK';
除了不必再次输入字符串外,只需使用现有变量派生类型

这里的想法是创建一个强类型的常量枚举。通过允许将这些常量用作鉴别器,这有助于更有效地进行鉴别器并集的模式匹配。您可以限制哪些常量是允许的,并提供编译器支持,让您知道您涵盖了所有必要的情况