ソースを参照

fix(types): remove explicit return type annotation requirement for `this` inference in computed options (#4221)

Amour1688 4 年 前
コミット
d3d5ad204d

+ 1 - 1
packages/reactivity/src/computed.ts

@@ -12,7 +12,7 @@ export interface WritableComputedRef<T> extends Ref<T> {
   readonly effect: ReactiveEffect<T>
 }
 
-export type ComputedGetter<T> = (ctx?: any) => T
+export type ComputedGetter<T> = (...args: any[]) => T
 export type ComputedSetter<T> = (v: T) => void
 
 export interface WritableComputedOptions<T> {

+ 5 - 5
test-dts/defineComponent.test-d.tsx

@@ -396,12 +396,12 @@ describe('type inference w/ options API', () => {
       }
     },
     computed: {
-      d(): number {
+      d() {
         expectType<number>(this.b)
         return this.b + 1
       },
       e: {
-        get(): number {
+        get() {
           expectType<number>(this.b)
           expectType<number>(this.d)
 
@@ -514,10 +514,10 @@ describe('with mixins', () => {
       expectType<string>(props.aP1)
     },
     computed: {
-      dC1(): number {
+      dC1() {
         return this.d + this.a
       },
-      dC2(): string {
+      dC2() {
         return this.aP1 + 'dC2'
       }
     }
@@ -926,7 +926,7 @@ describe('emits', () => {
     },
     mounted() {
       // #3599
-      this.$nextTick(function() {
+      this.$nextTick(function () {
         // this should be bound to this instance
 
         this.$emit('click', 1)