我的建議是這樣編寫ExtendedButton工廠函數: function ExtendedButton<T extends abstract new (...args: any) => InstanceType<T>>( ctor: T) { return Mixin(Button, ctor);} 這似乎適用于您的示例代碼: abstract class A { abstract foo(): void}abstract class FinalButton extends ExtendedButton(A) { }function foo(fb: FinalButton) { fb.foo(); fb.onToggle();} 我這樣做的方法是首先看看當您直接調用Mixin(Button, A)時會發生什么: const testA = Mixin(Button, A)// const testA: Class<any[], Button & A, typeof Button & typeof A, false> 然后將其與泛型版本進行比較,在泛型版本中,我們傳遞泛型抽象構造簽名類型的ctor值,而不是A: function ExtendedButton<T extends abstract new (...arg