【发布时间】:2019-07-19 20:07:52
【问题描述】:
我仍然对泛型类有所了解,我需要动态创建其他类。但我不知道该怎么做。
Class A {}
Class B<T> {
Return T
}
Const c = B(A); // which is T
就我正在尝试做的事情提供更多背景信息。
我使用 angular 和 typescript 3.45。通过解析正确的组件动态创建表单。在指令中,我应该能够检索一个泛型类。并在不了解它正在创建的类的情况下使用它。遵循关注点分离。
更新
最后我得到了 Generic 类型的一部分,但仍然有一些灰色区域,我仍在苦苦挣扎,不知道从哪里开始。对于任何感兴趣并且可能有点困惑的人,我希望这将有助于给您一些澄清。
接受任何输入类型并接收相同的类型。代码示例,让我们将此泛型类型称为U。
function func(a: U): U {
return a;
}
const c = func(arg: U); // after this line, c has a value of type U
// Same as
const c = func(10); // now c = 10;
我想问的是,对于任何输入类型,我都会得到一个泛型类型作为返回类型。这很愚蠢,因为编译器从输入推断类型并将 U 替换为实际的自定义或原始类型。
对于我返回的泛型类型,也许我们可以通过条件类型来实现它,但我仍然习惯于整个类型,转换类型和隐藏类型在扩展和实现之后。 link
感谢您的回答,这是我当前问题的正确答案。
【问题讨论】:
-
你的用例是什么?
-
您希望
c的类型为T?T是什么?还是您希望T的类型为A?在这种情况下B真的只是一个函数(不是类构造函数)?也许您可以充实此代码以构成真正的minimal reproducible example,并清楚地解释您正在尝试做什么,如guidelines for asking good questions 中所述。祝你好运! -
@jonas 我尝试使用 angular 和 typescript 3.45 创建其中一种动态反应形式。我正在使用指令来解析组件,但不必显式声明它。
-
组件:componentRef
= ref.resolvefactory(SpecialComponent);导致错误 SpecialComponent is not equal to T -
ComponentRef<SpecialComponent>是正确的类型。或者只是将类型省略为const component = ref.resolveFactory(...)并让 typescript 推断它
标签: javascript typescript