From c335939dcf364d144e2e972a99e53755593286f7 Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 1 Mar 2019 14:06:19 -0500 Subject: [PATCH] types: remove intersection of props interface on `this` --- packages/runtime-core/src/component.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/runtime-core/src/component.ts b/packages/runtime-core/src/component.ts index 0698dd2a6..8e14e57a2 100644 --- a/packages/runtime-core/src/component.ts +++ b/packages/runtime-core/src/component.ts @@ -72,7 +72,7 @@ export interface LifecycleMethods { export interface ComponentClass extends ComponentClassOptions { options?: ComponentOptions - new

(): Component & D & P + new

(): Component } export interface FunctionalComponent

{ @@ -84,9 +84,9 @@ export interface FunctionalComponent

{ export type ComponentType = ComponentClass | FunctionalComponent // Internal type that represents a mounted instance. -// It extends InternalComponent with mounted instance properties. +// It extends ComponentImplementation with mounted instance properties. export interface ComponentInstance

- extends InternalComponent, + extends ComponentImplementation, Partial>, Partial { constructor: ComponentClass @@ -107,7 +107,7 @@ export interface ComponentInstance

} // actual implementation of the component -class InternalComponent implements PublicInstanceMethods { +class ComponentImplementation implements PublicInstanceMethods { get $el(): any { const el = this.$vnode && this.$vnode.el return typeof el === 'function' ? (el as any)() : el @@ -125,6 +125,7 @@ class InternalComponent implements PublicInstanceMethods { $options: ComponentOptions | null = null $refs: Record = {} $proxy: any = null + $self: any _rawData: Data | null = null _computedGetters: Record | null = null @@ -190,7 +191,7 @@ class InternalComponent implements PublicInstanceMethods { // legacy event emitter interface exposed on component instances if (__COMPAT__) { - const p = InternalComponent.prototype as any + const p = ComponentImplementation.prototype as any ;['on', 'off', 'once'].forEach(key => { p['$' + key] = function(...args: any[]) { this._eventEmitter[key](...args) @@ -206,5 +207,5 @@ if (__COMPAT__) { } // the exported Component has the implementation details of the actual -// InternalComponent class but with proper type inference of ComponentClass. -export const Component = InternalComponent as ComponentClass +// ComponentImplementation class but with proper type inference of ComponentClass. +export const Component = ComponentImplementation as ComponentClass