You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript静态方法无法推断类实例方法属性名的解决方案问询

问题:实现仅接受类实例方法名的静态方法

我尝试实现一个仅接受类实例方法属性名的静态方法,但在以下场景中不知如何实现。求可行思路(调用签名请勿使用类型断言):

第一种实现尝试

type MethodKeys<T extends object> = keyof { [K in keyof T as T[K] extends (...args: any) => any ? K : never]: unknown };

class Model{ 
    static chainMethod<C extends typeof Model, T extends InstanceType<C>, K extends MethodKeys<T>>
        (this: C, name: K, method: T[K]) {
        
        }
    method(){

    }
}

class Party{
    static addProps<C extends typeof Model>(model: C){
        model.chainMethod('method', function(){ // 此处报错

        })
    }
}

第二种实现尝试

class Model{ 
    static chainMethod<C extends typeof Model, T extends InstanceType<C>, K extends keyof T, F extends T[K] extends (...args: any) => any ? T[K]: never>
        (this: C, name: K, method: F) {
        
        }
    method(){

    }
}

class Party{
    static addProps<C extends typeof Model>(model: C){
        model.chainMethod('method', function(){

        })
    }
}

更新
Matt Kantor已解决第二个方案,但我仍更偏好第一个能自动补全仅显示方法名的方案


内容的提问来源于stack exchange,提问作者Alexander Nenashev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:25:00