问答

typescript 常量最佳实践

作者:admin 2021-07-12 我要评论

enum ENUM_POSITION_TYPE { LEFT = 1, RIGHT = 2}// type PositionType = ENUM_TYPE.LEFT | ENUM_TYPE.RIGHTtype PositionType = ???//期望export let a1: Posit...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)
enum ENUM_POSITION_TYPE {
  LEFT = 1,
  RIGHT = 2
}

// type PositionType = ENUM_TYPE.LEFT | ENUM_TYPE.RIGHT
type PositionType = ???

//期望
export let a1: PositionType = ENUM_POSITION_TYPE.RIGHT //correct
export let a2: PositionType = 1 //correct
export let a3: PositionType = 3 //typescript error
###

你是想在编译时约束枚举类型的值?

这是不行的,TS 中的枚举类型,其实就是个 number / string 的别名类。

TS 官方文档中是这么描述的:

Enum types are assignable to the Number primitive type, and vice versa, but different enum types are not assignable to each other.

要么你可以在运行时做判断:

enum ENUM_POSITION_TYPE {
    LEFT = 1,
    RIGHT = 2
}

function foo(e: ENUM_POSITION_TYPE) {
    if (!(e in ENUM_POSITION_TYPE)) {
        throw new TypeError();
    }
}

要么你就别声明 enum,直接用 number 字面量:

type ENUM_POSITION_LEFT = 1;
type ENUM_POSITION_RIGHT = 2;
type PositionType = ENUM_POSITION_LEFT | ENUM_POSITION_RIGHT;

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • typescript 常量最佳实践

    typescript 常量最佳实践

  • Vue使用addRoutes动态添加路由之后,侧

    Vue使用addRoutes动态添加路由之后,侧

  • python在linux上运行报错

    python在linux上运行报错

  • 请问在浏览器端解析hive sql有什么好的

    请问在浏览器端解析hive sql有什么好的

腾讯云代理商
海外云服务器