在 redux 中使用 TypeScript 怎么让字符串字面量类型参数化

2019-05-06 14:04:37 +08:00
 l1nyanm1ng

原本使用 redux 时,会让每一个 action 的 type 定义为一个常量,之后再引用。现在切换到 TypeScript 上反而不明白怎么定义 type 是固定字符串的类型,不是直接字面量写的,而是通过参数化引用的。

这里贴上我暂时的解决方法,只是写死成字面量,真的希望找到参数化的写法。

2753 次点击
所在节点    JavaScript
5 条回复
wly19960911
2019-05-06 14:18:47 +08:00
枚举,枚举自身可以作为类型,只允许接受枚举的值。
wly19960911
2019-05-06 14:25:52 +08:00
另外一种形式是联合类型。

比如 type CountAction = "SET_COUNT" | "SET_COLLAPSED"; 这种类型下虽然是字符串,但是只允许某个字符串。配合枚举更好。

又比如,

enum CountAction {
SET_COUNT = "SET_COUNT",
CLEAR_COUNT = "CLEAR_COUNT"
}

enum AccountAction {
SET_ACCOUNT_STAT = "SET_ACCOUNT_STAT"
}

type MyReduxAction = CountAction | AccountAction;

然后定义只能调用 MyReduxAction,以上是我纯理论的,我不是写 react 和 redux 的,只懂原理。
wly19960911
2019-05-06 14:29:18 +08:00
@wly19960911 #2 定义只能调用 MyReduxAction,这个说错了,是只能传递这个类型的,不是调用....
GiantHard
2019-05-06 14:46:52 +08:00
l1nyanm1ng
2019-05-06 14:59:09 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/561460

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX