初学 ts,我想用 ts 从固定数组中随机取一个值,返回值是数组中的一个值,但是实现出来的效果却总是返回 string 类型,求助一个写法!
报错如下:
初学 ts,我想用 ts 从固定数组中随机取一个值,返回值是数组中的一个值,但是实现出来的效果却总是返回 string 类型,求助一个写法!
报错如下:
13 回答12.8k 阅读
8 回答2.5k 阅读
2 回答5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
5 回答805 阅读
3 回答2.1k 阅读
5 回答1.1k 阅读✓ 已解决
DirectionTypes 是一个对象,里面包含了从 key ⇒ value 的映射,也包含了从 value ⇒ key 的映射(上图红框内的部分)。
要取 DirectionTypes 的名称,可以用
keyof typeof DirectionTypes
来取:由于枚举类型的值并非完全限定集(除 Java 等语言外,其他很多语言的枚举都是非完全限定,比如你可以将整 3 赋值给
DirectionTypes
类型的变量),DirectionTypes[DirectionTypes.left]
得到的是一个string
类型。所以这段代码需要明确类型(逻辑可保证)但是枚举类型的名称集是限定的,所以不能直接用
string
类型去拿到一个枚举值。但是a
已经限定在DirectionType
也就是"left" | "right"
中了,所以可以用于获取b
,而且b
是DirectionTypes
类型,也就是这个枚举的值类型。最的给个 TypeScript Playground,你可以去看看这段代码