😱 像多线程那样去轮询多个状态,不同的状态满足后去执行不同的定时任务。 项目地址

该状态机基本是为写游戏自动脚本量身定做,它就是整个脚本的”调度中心”。即使是基于 Node.js 的单线程,你也能够实现”同时”检测角色血条,掉落物品,游戏状态等等各种来触发不同的操作,搭配 dm.dll 食用更佳!如下图是本人之前做的流放之路脚本的主框架部分代码:

如果你有一些问都不知道咋问的 TypeScript 问题,来这里翻翻或许能找到答案!

本文会不定期更新,我遇到的觉得值得分享的 TypeScript 问题都会写在这里

互斥类型

1
2
3
4
5
// https://github.com/Microsoft/TypeScript/issues/14094#issuecomment-373782604
type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never }
type XOR<T, U> = (T | U) extends object
? (Without<T, U> & U) | (Without<U, T> & T)
: T | U

使用上面的 XOR 范型,我们可以很容易地实现如下需求:

TypeScript 写久了,越来越觉得定义各种类型,接口啊其实都是在写编辑器自动提示的配置而已。而且现在 ts 的各种高级类型越来越多,整个类型系统甚至可以看作是一套函数式工具库。用它不难,用好它其实挺难的,其中的差别我觉得就像前端从面向 dom 的编程和转变为面向数据驱动编程那样,你得首先有类型思维,因为它一定程度上还会反过来影响你的 api 设计和数据结构。