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
来引用方法的输入参数,但是我发现了一种情况,它不起作用,我想对其进行记录/对这种情况下不起作用的原因有一些想法。
答案 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
(已更新:最初的答案是完全错误的。)