vue-prop

Prop type define of Vue3.
715 4
Install
npm install vue-prop
Latest Version:3.5.2
Vue:3
License:MIT
Last Updated:Oct 5, 2024
Links: GitHub  ·  npm
Maintainer: mivui

vue-prop

Prop type define of Vue3.

npm version Alt Alt

install
npm install vue-prop
example

<script setup lang="ts">
import { prop, emitType } from "vue-prop";

export const drawerProps = {
  visible: prop.boolean.def(false).isRequired,
  title: prop.string
};

export const drawerEmits = {
  open: emitType<(value: boolean) => void>()
};

const props = defineProps(drawerProps);

const emit = defineEmits(drawerEmits);
</script>

<script lang="ts">
import { defineComponent } from 'vue';
import { prop, emitType } from 'vue-prop';

export const drawerProps = {
  visible: prop.boolean.def(false).isRequired,
  title: prop.string
};

export const drawerEmits = {
  open: emitType<(value: boolean) => void>(),
};

export default defineComponent({
  name: 'Drawer',
  props: drawerProps,
  emits: drawerEmits,
  setup(props, { emit }) {
    return {}
  },
});
</script>

import { prop } from 'vue-prop';

interface Person {
  name: string;
  sex?: string;
  age: number;
}

const props = {
  name: prop.stringNumber.def('123').isRequired,
  //{type:[String,Number],required:true,default:123}
  test: prop.string,
  //{type:String}
  titles: prop.array<Person>().valid((value) => value.length > 0),
  //{type:Array as PropType<Array<Person>>,validator:(value) => value.length > 0}
  content: prop.vNode,
  //{type:[Object,String] as PropType<VNode|null|string>}
  style: prop.css.def({ height: '20px' }),
  //{type: Object as PropType<StyleValue>,default:{ height:'20px' }}
};
api
property default type example
string string prop.string
number number prop.number.def(7)
stringNumber string Ι number prop.stringNumber
boolean boolean prop.boolean
symbol symbol prop.symbol
date date prop.date
vNode vue.VNode Ι string Ι null prop.vNode
css vue.StyleValue prop.css
object Record<string, any> prop.object<{name?:string,age?:number}>()
array Record<string, any>[] prop.array<{name:string}>()
function ()=>void prop.function<(value?:number)=>boolean>()
literal undefined prop.literal<'ok'Ι'cancel'>()
Template Literal Type

<script setup lang="ts">
import { prop } from "vue-prop";

type Button = "ok" | "cancel" | 0 | true;

const props = defineProps({ button: prop.literal<Button>() });

</script>
Emit Type

<script setup lang="ts">
import { emitType } from "vue-prop";

export const drawerEmits = {
  open: emitType<(value: boolean) => void>()
};

const emit = defineEmits(drawerEmits);
</script>
Custom Type
import { propType } from "vue-prop";

const props = {
  title: propType<string | boolean>([String, Boolean]),
  user: propType<string | { name?: string, age?: number }>([String, Object]),
  color: propType<string | number, "red" | "blue" | 1 | 2>([String, Number])
};

Related Packages

vue

The progressive JavaScript framework for building modern web UI.

588,019,132 54,801
vue
@vueuse/shared
372,738,348 22,398
@vueuse/core

Collection of essential Vue Composition Utilities

367,188,523 22,398
@vitejs/plugin-vue

The official plugin for Vue SFC support in Vite.

333,357,380 686
eslint-plugin-vue

Official ESLint plugin for Vue.js

266,364,830 4,591

Version History

Version Released Vue License
3.5.2 >=3.0.0 MIT
3.5.1 ^3.5.13 MIT
3.5.0 ^3.5.11 MIT
3.3.5 ^3.5.11 MIT
3.3.4 ^3.5.11 MIT