浏览代码

HUE-9266 [ui] Enable Typescript for vue components

Johan Ahlen 5 年之前
父节点
当前提交
21ed570fe2

+ 1 - 0
.babelrc

@@ -1,5 +1,6 @@
 {
   "presets": [
+    "babel-preset-typescript-vue",
     "@babel/typescript",
     "@babel/preset-env"
   ],

+ 2 - 2
desktop/core/src/desktop/js/apps/jobBrowser/components/hiveQueryPlan.vue

@@ -2,7 +2,7 @@
   <div>{{title}}</div>
 </template>
 
-<script>
+<script lang="ts">
   import Vue from 'vue';
   import Component from 'vue-class-component'
   import wrap from '@vue/web-component-wrapper'
@@ -11,7 +11,7 @@
 
   @Component
   export default class HiveQueryPlan extends Vue {
-    title = 'Web Components FTW.';
+    title:string = 'Web Components FTW.';
   }
 
   window.customElements.define(HIVE_QUERY_PLAN_COMPONENT, wrap(Vue, HiveQueryPlan))

+ 3 - 0
desktop/core/src/desktop/js/types/web-component-wrapper/index.d.ts

@@ -0,0 +1,3 @@
+declare module '@vue/web-component-wrapper' {
+  export default function wrap(Vue: any, Component: any): any;
+}

+ 12 - 0
package-lock.json

@@ -6396,6 +6396,18 @@
         "babel-preset-current-node-syntax": "^0.1.2"
       }
     },
+    "babel-preset-typescript-vue": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/babel-preset-typescript-vue/-/babel-preset-typescript-vue-1.1.1.tgz",
+      "integrity": "sha512-wXeR7Y4xCsRUEdm4t4qlpv4wnxolS6jU0c7P2E6zJRWeG1sR0e6NL7DRN0tNuUwkUt0PU8bqVo4vzoA2VEuxnw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-transform-typescript": "^7.3.2",
+        "@babel/preset-typescript": "^7.3.3",
+        "vue-template-compiler": "^2.6.11"
+      }
+    },
     "babel-runtime": {
       "version": "6.26.0",
       "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",

+ 1 - 0
package.json

@@ -77,6 +77,7 @@
     "babel-jscs": "3.0.0-beta1",
     "babel-loader": "8.1.0",
     "babel-plugin-module-resolver": "4.0.0",
+    "babel-preset-typescript-vue": "1.1.1",
     "clean-webpack-plugin": "1.0.1",
     "css-loader": "^3.4.2",
     "eslint": "7.2.0",

+ 3 - 1
tsconfig.json

@@ -6,9 +6,11 @@
     "allowJs": true,
     "noEmit": true,
     "strict": true,
+    "experimentalDecorators": true,
     "isolatedModules": true,
     "esModuleInterop": true,
-    "baseUrl": "desktop/core/src/desktop/js"
+    "baseUrl": "desktop/core/src/desktop/js",
+    "typeRoots": [ "desktop/core/src/desktop/js/types", "./node_modules/@types"]
   },
   "include": [
     "."