]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
workflow(template-explorer): improve types (#128)
author月迷津渡 <wuhao.daraw@bytedance.com>
Sun, 6 Oct 2019 15:55:23 +0000 (23:55 +0800)
committerEvan You <yyx990803@gmail.com>
Sun, 6 Oct 2019 15:55:23 +0000 (11:55 -0400)
packages/template-explorer/src/index.ts
packages/template-explorer/src/options.ts

index 22199eaa03b4e6e7070169b6fa4e0d4313a4caeb..7e73218265541afc0bf179dd4780d6cd56d16c7b 100644 (file)
@@ -4,10 +4,16 @@ import { compilerOptions, initOptions } from './options'
 import { watch } from '@vue/runtime-dom'
 import { SourceMapConsumer } from 'source-map'
 
-const self = window as any
+declare global {
+  interface Window {
+    monaco: typeof m
+    _deps: any
+    init: () => void
+  }
+}
 
-self.init = () => {
-  const monaco = (window as any).monaco as typeof m
+window.init = () => {
+  const monaco = window.monaco
   const persistedState = JSON.parse(
     decodeURIComponent(window.location.hash.slice(1)) || `{}`
   )
@@ -28,10 +34,8 @@ self.init = () => {
       monaco.editor.setModelMarkers(editor.getModel()!, `@vue/compiler-dom`, [])
       console.log(`AST: `, ast)
       lastSuccessfulCode = code + `\n\n// Check the console for the AST`
-      lastSuccessfulMap = new self._deps['source-map'].SourceMapConsumer(
-        map
-      ) as SourceMapConsumer
-      lastSuccessfulMap.computeColumnSpans()
+      lastSuccessfulMap = new window._deps['source-map'].SourceMapConsumer(map)
+      lastSuccessfulMap!.computeColumnSpans()
     } catch (e) {
       console.error(e)
     }
@@ -71,7 +75,7 @@ self.init = () => {
     }
   }
 
-  const sharedEditorOptions = {
+  const sharedEditorOptions: m.editor.IEditorConstructionOptions = {
     theme: 'vs-dark',
     fontSize: 14,
     wordWrap: 'on',
@@ -81,30 +85,24 @@ self.init = () => {
     minimap: {
       enabled: false
     }
-  } as const
-
-  const editor = monaco.editor.create(
-    document.getElementById('source') as HTMLElement,
-    {
-      value: persistedState.src || `<div>Hello World!</div>`,
-      language: 'html',
-      ...sharedEditorOptions
-    }
-  )
+  }
+
+  const editor = monaco.editor.create(document.getElementById('source')!, {
+    value: persistedState.src || `<div>Hello World!</div>`,
+    language: 'html',
+    ...sharedEditorOptions
+  })
 
   editor.getModel()!.updateOptions({
     tabSize: 2
   })
 
-  const output = monaco.editor.create(
-    document.getElementById('output') as HTMLElement,
-    {
-      value: '',
-      language: 'javascript',
-      readOnly: true,
-      ...sharedEditorOptions
-    }
-  )
+  const output = monaco.editor.create(document.getElementById('output')!, {
+    value: '',
+    language: 'javascript',
+    readOnly: true,
+    ...sharedEditorOptions
+  })
   output.getModel()!.updateOptions({
     tabSize: 2
   })
@@ -207,7 +205,10 @@ self.init = () => {
   watch(reCompile)
 }
 
-function debounce<T extends Function>(fn: T, delay: number = 300): T {
+function debounce<T extends (...args: any[]) => any>(
+  fn: T,
+  delay: number = 300
+): T {
   let prevTimer: NodeJS.Timeout | null = null
   return ((...args: any[]) => {
     if (prevTimer) {
index 204811102eff8d6ec4d75d998fdd8469d4e9d074..fcf518cf7bf6fea0359dea462be5ec46d8b17048 100644 (file)
@@ -53,9 +53,10 @@ const App = {
           checked:
             compilerOptions.prefixIdentifiers ||
             compilerOptions.mode === 'module',
-          onChange(e: any) {
+          onChange(e: Event) {
             compilerOptions.prefixIdentifiers =
-              e.target.checked || compilerOptions.mode === 'module'
+              (<HTMLInputElement>e.target).checked ||
+              compilerOptions.mode === 'module'
           }
         }),
         h('label', { for: 'prefix' }, 'prefixIdentifiers'),
@@ -65,8 +66,8 @@ const App = {
           type: 'checkbox',
           id: 'hoist',
           checked: compilerOptions.hoistStatic,
-          onChange(e: any) {
-            compilerOptions.hoistStatic = e.target.checked
+          onChange(e: Event) {
+            compilerOptions.hoistStatic = (<HTMLInputElement>e.target).checked
           }
         }),
         h('label', { for: 'hoist' }, 'hoistStatic')
@@ -76,5 +77,5 @@ const App = {
 }
 
 export function initOptions() {
-  createApp().mount(App, document.getElementById('header') as HTMLElement)
+  createApp().mount(App, document.getElementById('header')!)
 }