TypeScript-确保和保留子类型/超类型

时间:2018-12-16 23:17:44

标签: typescript

假设我有两个事物的继承树,X类型和Y类型,每个都有各自的子类型集合。

所有X类型的项目都具有“匹配” Y类型,其中给定X类型的匹配Y类型和超类型可以应用于/存储在X的实例。

    X Inheritance      Y Inheritance
        Tree               Tree
    X1                 Y1          
     |-X1.1             |-Y1.1     
     |  |-X1.1.1        |  |-Y1.1.1
     |  \-X1.1.2        |  \-Y1.1.2
     \-X1.2             \-Y1.2     
        |-X1.2.1           |-Y1.2.1
        \-X1.2.2           \-Y1.2.2

因此,实际上,对于类型为X1.2.1的实例,可以使用Y1.2.1Y1.2Y1的实例(请考虑:通用下限)。 / p>

这是问题的第一部分,但是对于第二部分(一旦我们确保仅可以应用适用的类型),我们现在需要能够检索正确类型的Y实例X类型的实例。

TypeScript的类型系统非常灵活,这使我感到有些可能,但是我自己却无法弄清楚。

到目前为止,我采用的系统中Y类型不会彼此继承,而是全部单独实现非常通用的接口。问题是Y类型通常采用不同的参数,其中一种Y类型可能仅依赖于一个string,而另一种类型可能采用number, number, string。使用非常通用的接口,每个实现都被强制采用string作为参数,然后从string解析正确的参数,如果字符串不包含正确的信息,则会引发错误。

(举例来说),我可以将Y1.2的新实例添加到X1.2.2中,并且以后可以执行类似以下操作的类型:get Y1.2 from X1.2.2 and set parameter #2 to 236安全的方式,这样不仅可以正确地进行类型检查,而且还可以使我的IDE为我提供类型信息。

我什至不确定我要问的事情是否可能实现,但是任何对正确方向的帮助或指导将不胜感激。

0 个答案:

没有答案