options-test.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. import Vue = require("../index");
  2. import { ComponentOptions } from "../index";
  3. interface Component extends Vue {
  4. a: number;
  5. }
  6. Vue.component('component', {
  7. data() {
  8. this.$mount
  9. this.a
  10. return {
  11. a: 1
  12. }
  13. },
  14. props: {
  15. size: Number,
  16. name: {
  17. type: String,
  18. default: 0,
  19. required: true,
  20. validator(value) {
  21. return value > 0;
  22. }
  23. }
  24. },
  25. propsData: {
  26. msg: "Hello"
  27. },
  28. computed: {
  29. aDouble(this: Component) {
  30. return this.a * 2;
  31. },
  32. aPlus: {
  33. get(this: Component) {
  34. return this.a + 1;
  35. },
  36. set(this: Component, v: number) {
  37. this.a = v - 1;
  38. },
  39. cache: false
  40. }
  41. },
  42. methods: {
  43. plus() {
  44. this.a++;
  45. }
  46. },
  47. watch: {
  48. 'a': function(val: number, oldVal: number) {
  49. console.log(`new: ${val}, old: ${oldVal}`);
  50. },
  51. 'b': 'someMethod',
  52. 'c': {
  53. handler(val, oldVal) {
  54. this.a = val
  55. },
  56. deep: true
  57. }
  58. },
  59. el: "#app",
  60. template: "<div>{{ message }}</div>",
  61. beforeCreate() {
  62. this.a = 1;
  63. },
  64. created() {},
  65. beforeDestroy() {},
  66. destroyed() {},
  67. beforeMount() {},
  68. mounted() {},
  69. beforeUpdate() {},
  70. updated() {},
  71. activated() {},
  72. deactivated() {},
  73. directives: {
  74. a: {
  75. bind() {},
  76. inserted() {},
  77. update() {},
  78. componentMounted() {},
  79. unbind() {}
  80. },
  81. b(val, newVal) {
  82. this.el.textContent;
  83. this.name;
  84. this.expression;
  85. this.arg;
  86. this.modifiers["modifier"];
  87. }
  88. },
  89. components: {
  90. a: Vue.component(""),
  91. b: {} as ComponentOptions<Vue>
  92. },
  93. transitions: {},
  94. filters: {
  95. double(value: number) {
  96. return value * 2;
  97. }
  98. },
  99. parent: new Vue,
  100. mixins: [Vue.component(""), ({} as ComponentOptions<Vue>)],
  101. name: "Component",
  102. extends: {} as ComponentOptions<Vue>,
  103. delimiters: ["${", "}"]
  104. } as ComponentOptions<Component>);
  105. Vue.component("async-component", (resolve, reject) => {
  106. setTimeout(() => {
  107. resolve(Vue.component("component"));
  108. }, 0);
  109. return new Promise((resolve) => {
  110. resolve({ } as ComponentOptions<Vue>);
  111. })
  112. });