使用参数<this ['method']>失败

时间:2019-12-31 06:18:34

标签: typescript

class Example { 
  alpha(props: { check: boolean }) { 
    // noop
  }

  beta(props:
    Partial<Parameters<this['alpha']>[0]> // this fails
    // Partial<Parameters<Example['alpha']>[0]> // this works
    // Partial<{ check: boolean }> // this works
  ) { 
    // noop
  }

  useBeta(props:
    { check?: boolean | undefined }
  ) { 
    const { check } = props
    return this.beta({ check })
  }

}

我一直在使用this来引用方法的输入参数,但是我发现了一种情况,它不起作用,我想对其进行记录/对这种情况下不起作用的原因有一些想法。

1 个答案:

答案 0 :(得分:1)

我只是将{check: boolean}提取到某个接口并将其传递。无论如何,这不是一个问题。问题是为什么它不适用于this

编译器不能保证this将成为Example实例。编译器只能保证this将是伪通用<T extends Example>类型。

https://www.typescriptlang.org/docs/handbook/advanced-types.html#polymorphic-this-types https://en.wikipedia.org/wiki/Bounded_quantification#F-bounded_quantification


已更新:最初的答案是完全错误的。