Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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中的类型数组_Typescript - Fatal编程技术网

将元组类型转换为Typescript中的类型数组

将元组类型转换为Typescript中的类型数组,typescript,Typescript,我试图在vanillaTypeScript中复制Angular的依赖注入行为。我的方法是以元组类型获取构造函数的参数类型,将其转换为类型数组,然后查看字典对象或数组,并从该结构中获取对象,其类型与数组位置中的类型匹配 在下面的代码中,我定义了一个测试类,其中构造函数采用苹果和橙色。在类定义下面,我可以将每个参数的类型放入一个名为“TestClassParameters”的元组类型中 有什么方法可以将此类型:[apple,orange]转换为数组对象=>[typeof apple,typeof o

我试图在vanillaTypeScript中复制Angular的依赖注入行为。我的方法是以元组类型获取构造函数的参数类型,将其转换为类型数组,然后查看字典对象或数组,并从该结构中获取对象,其类型与数组位置中的类型匹配

在下面的代码中,我定义了一个测试类,其中构造函数采用苹果和橙色。在类定义下面,我可以将每个参数的类型放入一个名为“TestClassParameters”的元组类型中

有什么方法可以将此类型:[apple,orange]转换为数组对象=>[typeof apple,typeof orrange]吗

class Apple {}
class Orange { }

class TestClass {

    private apple : Apple;
    private orange: Orange;

    constructor(private apple: Apple, private orange: Orange) {}
}

type TestClassParameters = ConstructorParameters<typeof TestClass>;
class苹果{}
橙色类{}
类TestClass{
私人苹果:苹果;
私家橙:橙;
构造函数(私有apple:apple,私有orange:orange){}
}
类型TestClassParameters=ConstructorParameters;

无法将类型转换为运行时对象,因为类型在已编译的JavaScript中。TypeScript编译成JavaScript;在纯JavaScript中,您会采取什么方法来获得这种依赖注入?一旦你明白了这一点,我们可以建议如何给代码一些类型安全性。祝你好运这是一个很好的观点,我没有意识到,因为这只是设计阶段,动态方法无法工作,因为类型将在这一点之前被删除。我需要重新评估。我希望仍然能够通过以某种方式计算构造函数来实现这一点,类似于Angular。你在哪里使用这个数组?如果它在构造函数中,您可以执行
arguments.map(a=>a.constructor)
。假设调用函数传入一个Apple和一个Orange,这将创建数组
[Apple,Orange]
。这与我试图实现的非常接近,因为它确实提供了与类型名称对应的字符串。但是,由于它在构造函数中,我需要等待实例被实例化,但我实际上需要这些信息来实例化实例。