Typescript TS可选和必需的泛型联合类型 目标

Typescript TS可选和必需的泛型联合类型 目标,typescript,types,typeerror,typescript-generics,Typescript,Types,Typeerror,Typescript Generics,我试图创建一个可选参数,除非提供了一个使其成为必需的类型 预期行为 我希望下面的get方法在默认情况下有一个可选参数。如果调用了get方法并提供了TT类型,则该方法应具有TT类型的必需参数 export class Test<T = void> { get<TT>(param: T & TT): Test<T & TT> get<TT>(param: void | TT): Test<T & TT&g

我试图创建一个可选参数,除非提供了一个使其成为必需的类型

预期行为 我希望下面的
get
方法在默认情况下有一个可选参数。如果调用了
get
方法并提供了TT类型,则该方法应具有TT类型的必需参数

export class Test<T = void> {

    get<TT>(param: T & TT): Test<T & TT>
    get<TT>(param: void | TT): Test<T & TT>
    get<TT>(param: T & TT): Test<T & TT> {
        return null as any;
    }

}

const test = new Test();

test.get();

test
    .get<{ name: string }>({ name: '' })
    .get() // Expected 1 arguments, but got 0.
    .get<{ age: number }>({ age: 23 }); // Property 'name' is missing in type '{ age: number; }' but required in type '{ name: string; }'

导出类测试{
get(参数:T&TT):测试
get(参数:void | TT):测试
get(参数:T&TT):测试{
返回空值,如有;
}
}
常量测试=新测试();
test.get();
测试
.get({name:'})
.get()//应为1个参数,但得到0个。
.get({age:23});//类型“{age:number;}”中缺少属性“name”,但类型“{name:string;}”中需要属性“name”

上面的代码将编译,但我希望它抛出注释中提到的错误。你知道我怎样才能做到这一点吗?

这里有一个99%的预期解决方案:

导出类测试{
get(参数:L):测试{
将null作为任意测试返回
}
}
常量测试=新测试();
test.get(void 0)//因为根据[get]定义,param type是必需的,所以技术上我们不能忽略它。
测试
.get({name:'})
.get()//应为1个参数,但得到0个。
.get({age:23});//类型“{age:number;}”中缺少属性“name”,但类型“{name:string;}”中需要属性“name”

以下是99%的预期解决方案:

导出类测试{
get(参数:L):测试{
将null作为任意测试返回
}
}
常量测试=新测试();
test.get(void 0)//因为根据[get]定义,param type是必需的,所以技术上我们不能忽略它。
测试
.get({name:'})
.get()//应为1个参数,但得到0个。
.get({age:23});//类型“{age:number;}”中缺少属性“name”,但类型“{name:string;}”中需要属性“name”

默认情况下所需的参数是我试图解决的主要问题。我不希望参数在默认情况下是必需的,只有在指定了类型时才需要。感谢您的尝试。默认情况下所需的参数是我试图解决的主要问题。我不希望参数在默认情况下是必需的,只有在指定了类型时才需要。谢谢你的尝试。这可能会有帮助。这可能会有帮助