Skip to content
Menu
Yuuk的博客
  • 首页
  • 前端技术
    • JavaScript
    • HTML & CSS
  • SEO
  • 设计
    • 素材分享
    • 设计教程
  • 随笔
Yuuk的博客

Typescript 中如何把 ‘enum’ 的值赋值给 ‘type’?

Posted on 2020年4月16日2020年4月16日 by yuuk

假设我们需要实现以下的类型和枚举定义:

/**
/**
 *  宠物枚举
 */
enum Pets {
    CAT = 'cat',
    DOG = 'dog',
    PIG = 'pig',
}

/**
 * 宠物归属人
 */
const PETS_OWNER = {
    cat: 'sam',
    dog: 'john',
    pig: 'kevin',
}

 
type PetType = ?; // 这里的 PetType 如何取值?

/**
 * getPetByOwner 
 */
function getPetByOwner (type: PetType) {
    return PETS_OWNER[type];
}

这里的 petType 的定义显而易见,应该是枚举 PETS_ENUM 中的每一项的值:

type PetType = 'cat' | 'dog' | 'pig';

也可以用枚举映射来取值:

type PetType = PETS_ENUM .CAT | PETS_ENUM .DOG | PETS_ENUM .PIG;

上面这种写法比较啰嗦,我们可以利用 Typescript 内置的工具类型 Record 和 keyof 来实现

type PetType = keyof Record<Pets, string>

其实 Typescipt 已经帮我们实现了这个过程,只需将 PETS_ENUM 赋值给 PetType 即可:

type PetType = PETS_ENUM;
打赏赞(2)分享

搜索

近期文章

  • 宝塔面板中使用docker部署nodejs应用
  • 如何将docker镜像上传到阿里云
  • React Native 报错 No bundle URL present 解决方法
  • axios 给每一个请求添加耗时统计
  • css filter属性导致fixed失效

标签

addEventListener ajax ajax跨域 chatAt css居中 DNS缓存 docker gulp ie7 json jsonp margin memcache mysql nodejs ps技巧 typescript void vpn vuejs wampserver webpack win10 XMLHttpRequest z-index 事件冒泡 事件绑定 内容发布时间 图片加载 大写 字符串 封装ajax 广告屏蔽 批量修改图层名称 水平垂直居中 注册码 特殊符号 百度 空元素 站长平台 网页快照 负边界 递减 随机数 首字母

友情链接

  • 蔡甸新闻网
©2025 Yuuk的博客 | 鄂ICP备13014750号-9