Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 类类型的dict作为参数,实例的dict作为返回类型_Typescript - Fatal编程技术网

Typescript 类类型的dict作为参数,实例的dict作为返回类型

Typescript 类类型的dict作为参数,实例的dict作为返回类型,typescript,Typescript,我想写一个函数,它接受一个值为类的字典作为参数,在输出中我想得到一个带有实例的字典 e、 g 如何将类型写入函数f以获得强类型?是的,您可以使用映射类型和内置条件类型InstanceType来完成此操作 classes C1, C2 function f: ({ name1: C1, name2: C2 }): ({ name1: new C1() name2: new C2() }) class C1 { c1!: number} class C2{ c2!

我想写一个函数,它接受一个值为类的字典作为参数,在输出中我想得到一个带有实例的字典

e、 g


如何将类型写入函数f以获得强类型?

是的,您可以使用映射类型和内置条件类型InstanceType来完成此操作

classes C1, C2
function f: ({
    name1: C1,
    name2: C2
}): ({
    name1: new C1()
    name2: new C2()
})
class C1 { c1!: number} 
class C2{ c2!: number }
type AllInstance<T extends Record<string, new (...a: any[]) => any>> = {
    [P in keyof T]: InstanceType<T[P]>
}
function f<T extends Record<string, new () => any>>(o: T): AllInstance<T> {
    const result = {} as AllInstance<T>
    for(var key of Object.keys(o) as Array<keyof T>) {
        result[key] = new o[key]()
    }
    return result;
}

let o = f({ C1,C2 })
o.C1.c1;
o.C2.c2;