Typescript 将类型模板作为参数传递

Typescript 将类型模板作为参数传递,typescript,generics,Typescript,Generics,我希望以这种方式将泛型类型作为另一种类型的参数传递,以便能够在其中指定不同的泛型参数: interface ISmth<Child extends Base> { doSmth(): Child<string> doSmthElse(): Child<number> } 接口ISmth{ doSmth():子对象 doSmthElse():Child } 我怎么能做到 接口基础{ 值:T; } 接口Child1扩展了基{ abc:数字;

我希望以这种方式将泛型类型作为另一种类型的参数传递,以便能够在其中指定不同的泛型参数:

interface ISmth<Child extends Base> {
    doSmth(): Child<string>
    doSmthElse(): Child<number>
}
接口ISmth{
doSmth():子对象
doSmthElse():Child
}
我怎么能做到

接口基础{
值:T;
}
接口Child1扩展了基{
abc:数字;
}
接口Child2扩展了基{
xyz:字符串;
}
接口ISmth{
doSmth():Child//Child
doSmthElse():Child//Child
}
类Smth1实现ISmth{
doSmth(){
返回{value:“qqq”,abc:3}
}
doSmthElse(){
返回{value:42,abc:99}
}
}
类Smth2实现ISmth{
doSmth(){
返回{value:“qqq”,xyz:“qqq”}
}
doSmthElse(){
返回{value:333,xyz:“www”}
}
}

您需要更高种类的类型,而TypeScript并不真正支持这种类型。要求这样做是有问题的,但它已经开放了很长一段时间,我没有看到任何明显的运动迹象。不过,如果你想要它,你可以去那里,给它一个伟大的!我只有2个子类,这样的映射甚至可以简化其他代码。泛型很好,但是当使用嵌套时,它们会使代码增长很多。。。
interface Base<T = unknown> {
    value: T;
}

interface Child1<T = unknown> extends Base<T> {
    abc: number;
}

interface Child2<T = unknown> extends Base<T> {
    xyz: string;
}

interface ISmth<Child extends Base> {
    doSmth(): Child // Child<string>
    doSmthElse(): Child // Child<number>
}

class Smth1 implements ISmth<Child1> {
    doSmth() {
        return { value: "qqq", abc: 3 }
    }
    doSmthElse() {
        return { value: 42, abc: 99 }
    }
}

class Smth2 implements ISmth<Child2> {
    doSmth() {
        return { value: "qqq", xyz: "qqq" }
    }
    doSmthElse() {
        return { value: 333, xyz: "www" }
    }
}