]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
types: simplify types (#104)
author月迷津渡 <CodeDaraW@gmail.com>
Sat, 5 Oct 2019 14:09:34 +0000 (22:09 +0800)
committerEvan You <yyx990803@gmail.com>
Sat, 5 Oct 2019 14:09:34 +0000 (10:09 -0400)
12 files changed:
packages/runtime-core/src/apiApp.ts
packages/runtime-core/src/apiCreateComponent.ts
packages/runtime-core/src/component.ts
packages/runtime-core/src/componentProps.ts
packages/runtime-core/src/componentProxy.ts
packages/runtime-core/src/componentRenderUtils.ts
packages/runtime-core/src/createRenderer.ts
packages/runtime-core/src/directives.ts
packages/runtime-core/src/errorHandling.ts
packages/runtime-core/src/helpers/resolveAssets.ts
packages/runtime-core/src/scheduler.ts
packages/runtime-core/src/warning.ts

index 584362bee4df145fa72fc8abec429a305479c395..99ab5b78d72121feff9fd81be6d6aeee7a70802a 100644 (file)
@@ -1,4 +1,4 @@
-import { Component, Data, ComponentInternalInstance } from './component'
+import { Component, Data } from './component'
 import { ComponentOptions } from './apiOptions'
 import { ComponentPublicInstance } from './componentProxy'
 import { Directive } from './directives'
@@ -142,7 +142,7 @@ export function createAppAPI<HostNode, HostElement>(
           vnode.appContext = context
           render(vnode, rootContainer)
           isMounted = true
-          return (vnode.component as ComponentInternalInstance).renderProxy
+          return vnode.component!.renderProxy
         } else if (__DEV__) {
           warn(
             `App has already been mounted. Create a new app instance instead.`
index 45a3ca6d73b8017ce1546ca314151f18fbefc624..5752da8f066c383af66d99f7cc76ea63805b272c 100644 (file)
@@ -77,5 +77,5 @@ export function createComponent<
 
 // implementation, close to no-op
 export function createComponent(options: any) {
-  return isFunction(options) ? { setup: options } : (options as any)
+  return isFunction(options) ? { setup: options } : options
 }
index 570092dc51080c88260e9b947577e0fff9a48260..75a2876aa5593e0b9a5d69e66bde0f1bd05801c3 100644 (file)
@@ -225,7 +225,7 @@ export function setupStatefulComponent(
 ) {
   const Component = instance.type as ComponentOptions
   // 1. create render proxy
-  instance.renderProxy = new Proxy(instance, PublicInstanceProxyHandlers) as any
+  instance.renderProxy = new Proxy(instance, PublicInstanceProxyHandlers)
   // 2. create props proxy
   // the propsProxy is a reactive AND readonly proxy to the actual props.
   // it will be updated in resolveProps() on updates before render
@@ -255,7 +255,7 @@ export function setupStatefulComponent(
       if (__FEATURE_SUSPENSE__) {
         // async setup returned Promise.
         // bail here and wait for re-entry.
-        instance.asyncDep = setupResult as Promise<any>
+        instance.asyncDep = setupResult
       } else if (__DEV__) {
         warn(
           `setup() returned a Promise, but the version of Vue you are using ` +
@@ -358,10 +358,9 @@ export const SetupProxySymbol = Symbol()
 const SetupProxyHandlers: { [key: string]: ProxyHandler<any> } = {}
 ;['attrs', 'slots', 'refs'].forEach((type: string) => {
   SetupProxyHandlers[type] = {
-    get: (instance, key) => (instance[type] as any)[key],
-    has: (instance, key) =>
-      key === SetupProxySymbol || key in (instance[type] as any),
-    ownKeys: instance => Reflect.ownKeys(instance[type] as any),
+    get: (instance, key) => instance[type][key],
+    has: (instance, key) => key === SetupProxySymbol || key in instance[type],
+    ownKeys: instance => Reflect.ownKeys(instance[type]),
     // this is necessary for ownKeys to work properly
     getOwnPropertyDescriptor: (instance, key) =>
       Reflect.getOwnPropertyDescriptor(instance[type], key),
@@ -379,6 +378,6 @@ function createSetupContext(instance: ComponentInternalInstance): SetupContext {
     slots: new Proxy(instance, SetupProxyHandlers.slots),
     refs: new Proxy(instance, SetupProxyHandlers.refs),
     emit: instance.emit
-  } as any
+  }
   return __DEV__ ? Object.freeze(context) : context
 }
index fad4d78b7e4278a1512f498952601e9c1dc8d21c..4f32d3c6f4d884ceeb66107e06c86ac7eafbcdd0 100644 (file)
@@ -96,7 +96,7 @@ export function resolveProps(
   _options: ComponentPropsOptions | void
 ) {
   const hasDeclaredProps = _options != null
-  const options = normalizePropsOptions(_options) as NormalizedPropsOptions
+  const options = normalizePropsOptions(_options)!
   if (!rawProps && !hasDeclaredProps) {
     return
   }
@@ -196,9 +196,9 @@ const normalizationMap = new WeakMap()
 
 function normalizePropsOptions(
   raw: ComponentPropsOptions | void
-): NormalizedPropsOptions | void {
+): NormalizedPropsOptions | null {
   if (!raw) {
-    return
+    return null
   }
   if (normalizationMap.has(raw)) {
     return normalizationMap.get(raw)
index 39ee392c1e7a8da98026c9df72a859facc617bcd..b93e5aba34445a6d223407c2c2e8a10dbb26e736 100644 (file)
@@ -38,7 +38,7 @@ export const PublicInstanceProxyHandlers = {
       return renderContext[key]
     } else if (hasOwn(props, key)) {
       // return the value from propsProxy for ref unwrapping and readonly
-      return (propsProxy as any)[key]
+      return propsProxy![key]
     } else {
       // TODO simplify this?
       switch (key) {
index f2973adbdc079f515c62464361afef97e0ec3346..554430c54d8579f0888676b720bf20321f39ff16 100644 (file)
@@ -29,7 +29,7 @@ export function renderComponentRoot(
   currentRenderingInstance = instance
   try {
     if (vnode.shapeFlag & ShapeFlags.STATEFUL_COMPONENT) {
-      result = normalizeVNode((instance.render as Function).call(renderProxy))
+      result = normalizeVNode(instance.render!.call(renderProxy))
     } else {
       // functional
       const render = Component as FunctionalComponent
@@ -66,12 +66,12 @@ export function shouldUpdateComponent(
     }
     if (patchFlag & PatchFlags.FULL_PROPS) {
       // presence of this flag indicates props are always non-null
-      return hasPropsChanged(prevProps as Data, nextProps as Data)
+      return hasPropsChanged(prevProps!, nextProps!)
     } else if (patchFlag & PatchFlags.PROPS) {
-      const dynamicProps = nextVNode.dynamicProps as string[]
+      const dynamicProps = nextVNode.dynamicProps!
       for (let i = 0; i < dynamicProps.length; i++) {
         const key = dynamicProps[i]
-        if ((nextProps as any)[key] !== (prevProps as any)[key]) {
+        if (nextProps![key] !== prevProps![key]) {
           return true
         }
       }
index 8829b7389b80c8b4c5c645d2c9dc12ca451aac9d..83d98f18f55961bf07712bcc41f857fe075f02ba 100644 (file)
@@ -60,12 +60,8 @@ function createDevEffectOptions(
 ): ReactiveEffectOptions {
   return {
     scheduler: queueJob,
-    onTrack: instance.rtc
-      ? e => invokeHooks(instance.rtc as Function[], e)
-      : void 0,
-    onTrigger: instance.rtg
-      ? e => invokeHooks(instance.rtg as Function[], e)
-      : void 0
+    onTrack: instance.rtc ? e => invokeHooks(instance.rtc!, e) : void 0,
+    onTrigger: instance.rtg ? e => invokeHooks(instance.rtg!, e) : void 0
   }
 }
 
@@ -449,7 +445,7 @@ export function createRenderer<
         // bail out and go through a full diff because we need to unset the old key
         if (patchFlag & PatchFlags.PROPS) {
           // if the flag is present then dynamicProps must be non-null
-          const propsToUpdate = n2.dynamicProps as string[]
+          const propsToUpdate = n2.dynamicProps!
           for (let i = 0; i < propsToUpdate.length; i++) {
             const key = propsToUpdate[i]
             const prev = oldProps[key]
@@ -495,7 +491,7 @@ export function createRenderer<
 
     if (dynamicChildren != null) {
       // children fast path
-      const olddynamicChildren = n1.dynamicChildren as HostVNode[]
+      const olddynamicChildren = n1.dynamicChildren!
       for (let i = 0; i < dynamicChildren.length; i++) {
         patch(
           olddynamicChildren[i],
@@ -579,12 +575,10 @@ export function createRenderer<
     isSVG: boolean,
     optimized: boolean
   ) {
-    const fragmentStartAnchor = (n2.el = n1
-      ? n1.el
-      : hostCreateComment('')) as HostNode
+    const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateComment(''))!
     const fragmentEndAnchor = (n2.anchor = n1
       ? n1.anchor
-      : hostCreateComment('')) as HostNode
+      : hostCreateComment(''))!
     if (n1 == null) {
       hostInsert(fragmentStartAnchor, container, anchor)
       hostInsert(fragmentEndAnchor, container, anchor)
@@ -647,7 +641,7 @@ export function createRenderer<
       }
     } else {
       // update content
-      const target = (n2.target = n1.target) as HostElement
+      const target = (n2.target = n1.target)!
       if (patchFlag === PatchFlags.TEXT) {
         hostSetElementText(target, children as string)
       } else if (!optimized) {
@@ -783,7 +777,7 @@ export function createRenderer<
     isSVG: boolean,
     optimized: boolean
   ) {
-    const suspense = (n2.suspense = n1.suspense) as HostSuspsenseBoundary
+    const suspense = (n2.suspense = n1.suspense)!
     suspense.vnode = n2
     const { content, fallback } = normalizeSuspenseChildren(n2)
     const oldSubTree = suspense.subTree
@@ -959,8 +953,7 @@ export function createRenderer<
         isSVG
       )
     } else {
-      const instance = (n2.component =
-        n1.component) as ComponentInternalInstance
+      const instance = (n2.component = n1.component)!
 
       if (shouldUpdateComponent(n1, n2, optimized)) {
         if (
@@ -991,12 +984,7 @@ export function createRenderer<
       }
     }
     if (n2.ref !== null && parentComponent !== null) {
-      setRef(
-        n2.ref,
-        n1 && n1.ref,
-        parentComponent,
-        (n2.component as ComponentInternalInstance).renderProxy
-      )
+      setRef(n2.ref, n1 && n1.ref, parentComponent, n2.component!.renderProxy)
     }
   }
 
@@ -1601,7 +1589,7 @@ export function createRenderer<
       return
     }
     if (__FEATURE_SUSPENSE__ && vnode.type === Suspense) {
-      const suspense = vnode.suspense as SuspenseBoundary
+      const suspense = vnode.suspense!
       move(
         suspense.isResolved ? suspense.subTree : suspense.fallbackTree,
         container,
@@ -1611,14 +1599,14 @@ export function createRenderer<
       return
     }
     if (vnode.type === Fragment) {
-      hostInsert(vnode.el as HostNode, container, anchor)
+      hostInsert(vnode.el!, container, anchor)
       const children = vnode.children as HostVNode[]
       for (let i = 0; i < children.length; i++) {
         move(children[i], container, anchor)
       }
-      hostInsert(vnode.anchor as HostNode, container, anchor)
+      hostInsert(vnode.anchor!, container, anchor)
     } else {
-      hostInsert(vnode.el as HostNode, container, anchor)
+      hostInsert(vnode.el!, container, anchor)
     }
   }
 
@@ -1677,7 +1665,7 @@ export function createRenderer<
     }
 
     if (doRemove) {
-      hostRemove(vnode.el as HostNode)
+      hostRemove(vnode.el!)
       if (anchor != null) hostRemove(anchor)
     }
 
@@ -1742,19 +1730,9 @@ export function createRenderer<
     doRemove?: boolean
   ) {
     suspense.isUnmounted = true
-    unmount(
-      suspense.subTree as HostVNode,
-      parentComponent,
-      parentSuspense,
-      doRemove
-    )
+    unmount(suspense.subTree, parentComponent, parentSuspense, doRemove)
     if (!suspense.isResolved) {
-      unmount(
-        suspense.fallbackTree as HostVNode,
-        parentComponent,
-        parentSuspense,
-        doRemove
-      )
+      unmount(suspense.fallbackTree, parentComponent, parentSuspense, doRemove)
     }
   }
 
@@ -1784,7 +1762,7 @@ export function createRenderer<
         suspense.isResolved ? suspense.subTree : suspense.fallbackTree
       )
     }
-    return hostNextSibling((anchor || el) as HostNode)
+    return hostNextSibling((anchor || el)!)
   }
 
   function setRef(
index 39aa7d6e7d74e0dd1b19b2cf8aacdebfa72327f0..09caf36bed54b9955f4d6492d6cbc3650ca681dc 100644 (file)
@@ -55,13 +55,13 @@ function applyDirective(
   arg?: string,
   modifiers?: DirectiveModifiers
 ) {
-  let valueCacheForDir = valueCache.get(directive) as WeakMap<VNode, any>
+  let valueCacheForDir = valueCache.get(directive)!
   if (!valueCacheForDir) {
     valueCacheForDir = new WeakMap<VNode, any>()
     valueCache.set(directive, valueCacheForDir)
   }
   for (const key in directive) {
-    const hook = directive[key as keyof Directive] as DirectiveHook
+    const hook = directive[key as keyof Directive]!
     const hookKey = `vnode` + key[0].toUpperCase() + key.slice(1)
     const vnodeHook = (vnode: VNode, prevVNode: VNode | null) => {
       let oldValue
@@ -85,7 +85,7 @@ function applyDirective(
     }
     const existing = props[hookKey]
     props[hookKey] = existing
-      ? [].concat(existing as any, vnodeHook as any)
+      ? [].concat(existing, vnodeHook as any)
       : vnodeHook
   }
 }
index a5c9213e5b98b67aa7775edb929d9e28010c0849..26a99a26924e9798eaa53a0bc1e9271f128ef585 100644 (file)
@@ -72,7 +72,7 @@ export function callWithAsyncErrorHandling(
 ) {
   const res = callWithErrorHandling(fn, instance, type, args)
   if (res != null && !res._isVue && typeof res.then === 'function') {
-    ;(res as Promise<any>).catch(err => {
+    res.catch((err: any) => {
       handleError(err, instance, type)
     })
   }
index fd6fdd5d7dfa27a4f5f63809cc086327b760e8a5..b129d552f658df820683bb6aa918aefc64e65d95 100644 (file)
@@ -5,13 +5,18 @@ import { camelize, capitalize } from '@vue/shared'
 import { warn } from '../warning'
 
 export function resolveComponent(name: string): Component | undefined {
-  return resolveAsset('components', name) as any
+  return resolveAsset('components', name)
 }
 
 export function resolveDirective(name: string): Directive | undefined {
-  return resolveAsset('directives', name) as any
+  return resolveAsset('directives', name)
 }
 
+// overload 1: components
+function resolveAsset(type: 'components', name: string): Component | undefined
+// overload 2: directives
+function resolveAsset(type: 'directives', name: string): Directive | undefined
+
 function resolveAsset(type: 'components' | 'directives', name: string) {
   const instance = currentRenderingInstance || currentInstance
   if (instance) {
index 3a73af95965327bc3facb985962ac07529a7fe39..4c9f452a824690f3441eadb9bdb4124d53499c65 100644 (file)
@@ -53,11 +53,11 @@ function flushJobs(seenJobs?: JobCountMap) {
   }
   while ((job = queue.shift())) {
     if (__DEV__) {
-      const seen = seenJobs as JobCountMap
+      const seen = seenJobs!
       if (!seen.has(job)) {
         seen.set(job, 1)
       } else {
-        const count = seen.get(job) as number
+        const count = seen.get(job)!
         if (count > RECURSION_LIMIT) {
           throw new Error(
             'Maximum recursive updates exceeded. ' +
index 24e6d9c72d4b6fe64b1310dfebde320addc300bb..4aede5e85ebf464b89bd5a5df772a26f234d315f 100644 (file)
@@ -77,7 +77,7 @@ function getComponentTrace(): ComponentTraceStack {
         recurseCount: 0
       })
     }
-    const parentInstance: ComponentInternalInstance | null = (currentVNode.component as ComponentInternalInstance)
+    const parentInstance: ComponentInternalInstance | null = currentVNode.component!
       .parent
     currentVNode = parentInstance && parentInstance.vnode
   }
@@ -107,10 +107,7 @@ function formatTraceEntry(
     recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``
   const open = padding + `<${formatComponentName(vnode)}`
   const close = `>` + postfix
-  const rootLabel =
-    (vnode.component as ComponentInternalInstance).parent == null
-      ? `(Root)`
-      : ``
+  const rootLabel = vnode.component!.parent == null ? `(Root)` : ``
   return vnode.props
     ? [open, ...formatProps(vnode.props), close, rootLabel]
     : [open + close, rootLabel]