vue3声明字段名为枚举的类型详解

目录
  • vue3声明字段名为枚举类型
    • 下面是Type的枚举声明,共有6个字段
  • vue使用提升之"枚举"应用
    • 方式一(适用于简易过滤器中)
    • 方拾二(过滤器,循环列表)

vue3声明字段名为枚举类型

下面是Type的枚举声明,共有6个字段

enum Type {
  primary = "primary",
  success = "success",
  warning = "warning",
  warn = "warn", // warning alias
  danger = "danger",
  info = "info",
}

TypeScript 中声明类型的关键字有两个,interface 和 type,在声明 key 不确定类型的字段时稍有不同。

使用 type 进行声明:

type ColorConfig = {
  [key in Type]: Colors;
};

使用 interface 却只能像下面这样:

interface ColorConfig {
  [key: string]: Colors;
}

因为 interface 的索引只能是基础类型,类型别名也不可以。而 type 的索引可以是复合类型。

vue使用提升之"枚举"应用

方式一(适用于简易过滤器中)

// enum.js**文件
/**
 * 获取枚举值:STATUSMAP.TTT
 * 获取枚举描述:STATUSMAP.getDesc('SH')
 * 通过枚举值获取描述:STATUSMAP.getDescFromValue('TG')
 */
let STATUSMAP = createEnum({
  SH: ['SH', '审核中'],
  TG: ['TG', '审核通过']
});
function createEnum(definition) {
  const valueMap = {};
  const descMap = {};
  for (const key of Object.keys(definition)) {
    const [value, desc] = definition[key];
    valueMap[key] = value;
    descMap[value] = desc;
  }
  return {
    ...valueMap,
    getDesc(key) {
      return (definition[key] && definition[key][1]) || '无';
    },
    getDescFromValue(value) {
      return descMap[value] || '无';
    }
  }
}
export default STATUSMAP;

view文件

<el-row>
   <el-button>枚举测试</el-button>
   <p>当前状态:{{STATUS.getDescFromValue('SH')}}</p>
   <p>也可用通过枚举名称获取描述:{{STATUS.getDesc('HHH')}}</p>
 </el-row>
 <!-- 过滤器中使用 则在filters过滤器中直接使用函数返回值 -->

方拾二(过滤器,循环列表)

// order.js文件
/**
 * 定义枚举值 
 */
export default {
  order: [
    { value: 'TJ', label: '已提交' },
    { value: 'CZ', label: '处理中' },
    { value: 'CL', label: '已处理' },
  ],
  orderDetail: [
    { value: 'DF', label: '待发货' },
    { value: 'FH', label: '已发货' },
    { value: 'QS', label: '已签收' },
  ]
}
// constants.js文件
/**
* 定义枚举工具
*  
*/
import order from './order/index.js';
let constants = {
  ...order
};
let valueMap = {};
let nameMap = {};
Object.keys(constants).forEach(key => {
  valueMap[key] = [];
  nameMap[key] = {};
  constants[key].forEach(event => {
    valueMap[key].push(event);
    nameMap[key][event.value] = event.label;
  });
});
export {
  valueMap,
  nameMap
}
/**
* view文件
*/
<template>
    <h3>枚举值用于展示</h3>
    <el-row>
        <el-button v-for="(item, index) in valueMap.order" :key="index">{{item.label}}</el-button>
    </el-row>
    <h3>枚举值过滤器</h3>
    <el-row>
        <el-button>{{enumValue | filterStatus('orderDetail')}}</el-button>
    </el-row>
</template>
<script>
    import { valueMap, nameMap } from '@/constants';
    export default {
      data() {
        return {
          STATUS: STATUS,
          valueMap,
          enumValue: 'FH', // 发货
        }
      },
      filters:{
        filterStatus: function(val, key){
          if(!val && val !== 0){
            return '无';
          }
          return nameMap[key][val]; 
        }
      }
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue项目中如何添加枚举

    目录 vue项目添加枚举 在vue文件中引用 使用方法 vue中枚举的使用 1. 建一个js文件如:common.js 2. 在页面直接引入 vue项目添加枚举 添加文件,文件名为enum.js 文件内容: //使用方法 /** * 获取枚举值:STATUSMAP.SH * 获取枚举描述:STATUSMAP.getDesc('SH') * 通过枚举值获取描述:STATUSMAP.getDescFromValue('TG') */ let STATUSMAP = createEnum({ SH:

  • vue动态绑定多个class以及带上三元运算或其他条件

    目录 动态绑定多个class带上三元运算或其他条件 动态绑定属性 例子 实现 一个标签中含有多个class(其中包含三元表达式)的写法 1.数组形式 2.字符串拼接 动态绑定多个class带上三元运算或其他条件 动态绑定属性 在v-for循环中,根据需求,在10条数据里,前3条添加不一样的样式. 例子 设置第一条数据的样式为one <li v-for="(item,index) in items" :key="index">     <span :

  • vue三元运算之多重条件判断方式(多个枚举值转译)

    目录 vue多重条件判断(多个枚举值转译) vue标签中使用三元运算符 vue多重条件判断(多个枚举值转译) 直接上代码: div class="msgLi">      <p>组织设置:</p>      <p>{{ organInfo.partySetup=="1"?"撤销":organInfo.partySetup=="2"?"调整":organInfo.pa

  • Vue 样式切换及三元判断样式关联操作

    假设有需求: 后台返回状态1:启用,0:禁用 1.若要使启用为绿色,禁用不添加其他样式 <el-table-column prop="statusName" align="center" label="状态"> <template slot-scope="scope"> <div :class="{active:scope.row.status==1}"> {{ scop

  • vue3声明字段名为枚举的类型详解

    目录 vue3声明字段名为枚举类型 下面是Type的枚举声明,共有6个字段 vue使用提升之"枚举"应用 方式一(适用于简易过滤器中) 方拾二(过滤器,循环列表) vue3声明字段名为枚举类型 下面是Type的枚举声明,共有6个字段 enum Type {   primary = "primary",   success = "success",   warning = "warning",   warn = "wa

  • C语言中的自定义类型之结构体与枚举和联合详解

    目录 1.结构体 1.1结构的基础知识 1.2结构的声明 1.3特殊的声明 1.4结构的自引用 1.5结构体变量的定义和初始化 1.6结构体内存对齐 1.7修改默认对齐数 1.8结构体传参 2.位段 2.1什么是位段 2.2位段的内存分配 2.3位段的跨平台问题 2.4位段的应用 3.枚举 3.1枚举类型的定义 3.2枚举的优点 3.3枚举的使用 4.联合 4.1联合类型的定义 4.2联合的特点 4.3联合大小的计算 1.结构体 1.1结构的基础知识 结构是一些值的集合,这些值称为成员变量.结构

  • django自定义非主键自增字段类型详解(auto increment field)

    1.django自定义字段类型,实现非主键字段的自增 # -*- encoding: utf-8 -*- from django.db.models.fields import Field, IntegerField from django.core import checks, exceptions from django.utils.translation import ugettext_lazy as _ class AutoIncreField(Field): description =

  • C语言自定义数据类型的结构体、枚举和联合详解

    结构体基础知识 首先结构体的出现是因为我们使用C语言的基本类型无法满足我们的需求,比如我们要描述一本书,就需要书名,作者,价格,出版社等等一系列的属性,无疑C语言的基本数据类型无法解决,所以就出现了最重要的自定义数据类型,结构体. 首先我们创建一个书的结构体类型来认识一下 struct Book { char name[20]; char author[20]; int price; }; 首先是struct是结构体关键字,用来告诉编译器你这里声明的是一个结构体类型而不是其他的东西,然后是Boo

  • SpringBoot在RequestBody中使用枚举参数案例详解

    前文说到 优雅的使用枚举参数 和 实现原理,本文继续说一下如何在 RequestBody 中优雅使用枚举. 本文先上实战,说一下如何实现.在 优雅的使用枚举参数 代码的基础上,我们继续实现. 确认需求 需求与前文类似,只不过这里需要是在 RequestBody 中使用.与前文不同的是,这种请求是通过 Http Body 的方式传输到后端,通常是 json 或 xml 格式,Spring 默认借助 Jackson 反序列化为对象. 同样的,我们需要在枚举中定义 int 类型的 id.String

  • TypeScript实用技巧 Nominal Typing名义类型详解

    目录 Nominal Typing(名义类型) 概念解析 拓展应用 在Vue中的应用 Nominal Typing(名义类型) 概念解析 意思是给一个类型附加上一个“名义”,从而防止结构类型在某些情况下由于类型结构相似而被错用.假设有如下代码: interface Vector2D { x: number, y: number }; interface Vector3D { x: number, y: number, z: number }; function calc(vector: Vect

  • Javascript类型系统之String字符串类型详解

    javascript没有表示单个字符的字符型,只有字符串String类型,字符型相当于仅包含一个字符的字符串 字符串String是javascript基本数据类型,同时javascript也支持String对象,它是一个原始值的包装对象.在需要时,javascript会自动在原始形式和对象形式之间转换.本文将介绍字符串String原始类型及String包装对象 定义 字符串String类型是由引号括起来的一组由16位Unicode字符组成的字符序列 字符串类型常被用于表示文本数据,此时字符串中的

  • Go语言中的方法、接口和嵌入类型详解

    概述 在 Go 语言中,如果一个结构体和一个嵌入字段同时实现了相同的接口会发生什么呢?我们猜一下,可能有两个问题: 1.编译器会因为我们同时有两个接口实现而报错吗? 2.如果编译器接受这样的定义,那么当接口调用时编译器要怎么确定该使用哪个实现? 在写了一些测试代码并认真深入的读了一下标准之后,我发现了一些有意思的东西,而且觉得很有必要分享出来,那么让我们先从 Go 语言中的方法开始说起. 方法 Go 语言中同时有函数和方法.一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的

  • Python 变量类型详解

    变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符. 变量赋值 Python 中的变量赋值不需要类型声明. 每个变量在内存中创建,都包括变量的标识,名称和数据这些信息. 每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 等号(=)用来给变量赋值. 等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值. 例

  • C语言关于自定义数据类型之枚举和联合体详解

    目录 前言 枚举 枚举类型的定义 枚举类型的优点 枚举类型的使用 枚举中需要注意的点 联合体 联合体类型的定义 联合体的特点 联合体的使用 联合体存在内存对齐 结语 前言 在C语言的自定义数据类型中,除了我们最为常用的结构体之外,还有两个比较少用的自定义数据类型,分别为枚举和联合体(也可以称为共用体). 今天,我们一起看学习一下相关的知识吧! 枚举 什么是枚举? 顾名思义,就是一一列举,把所有的情况,所有的取值,一一列举出来. 在我们生活中,有不少的东西是可以全部列举出来的. 如一个星期有七天,

随机推荐