3.3.1 • Published 1 year ago

vue-prop v3.3.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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

propertydefault typeexample
stringstringprop.string
numbernumberprop.number.def(7)
stringNumberstring Ι numberprop.stringNumber
booleanbooleanprop.boolean
symbolsymbolprop.symbol
datedateprop.date
vNodevue.VNode Ι string Ι nullprop.vNode
cssvue.StyleValueprop.css
objectRecord<string, any>prop.object<{name?:string,age?:number}>()
arrayRecord<string, any>[]prop.array<{name:string}>()
function()=>voidprop.function<(value?:number)=>boolean>()
literalundefinedprop.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])
};
3.3.1

1 year ago

3.3.0

1 year ago

3.2.2

2 years ago

3.2.1

2 years ago

3.2.0

2 years ago

3.1.3

2 years ago

3.1.2

2 years ago

3.1.1

2 years ago

3.1.0

2 years ago

3.0.4

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago

3.0.1

2 years ago

3.0.0

2 years ago