typescript 定义函数返回类型,从固定数组中取值,期望返回数组中的一个值,但是总返回 string 类型,求助!

初学 ts,我想用 ts 从固定数组中随机取一个值,返回值是数组中的一个值,但是实现出来的效果却总是返回 string 类型,求助一个写法!
image.png

报错如下:
image.png

阅读 2.9k
1 个回答

image.png

DirectionTypes 是一个对象,里面包含了从 key ⇒ value 的映射,也包含了从 value ⇒ key 的映射(上图红框内的部分)。

要取 DirectionTypes 的名称,可以用 keyof typeof DirectionTypes 来取:

image.png

由于枚举类型的值并非完全限定集(除 Java 等语言外,其他很多语言的枚举都是非完全限定,比如你可以将整 3 赋值给 DirectionTypes 类型的变量),DirectionTypes[DirectionTypes.left] 得到的是一个 string 类型。所以这段代码需要明确类型(逻辑可保证)

image.png

但是枚举类型的名称集是限定的,所以不能直接用 string 类型去拿到一个枚举值。但是 a 已经限定在 DirectionType 也就是 "left" | "right" 中了,所以可以用于获取 b,而且 bDirectionTypes 类型,也就是这个枚举的值类型。

image.png

最的给个 TypeScript Playground,你可以去看看这段代码

推荐问题