根据父对象定义类型,并将其传播并合并到子对象(例如Android的layout属性)

时间:2018-11-09 09:35:05

标签: javascript typescript generics

在Typescript中,我试图基于两个对象之间的父子关系定义类型。

我追求的是拥有类似于Android的xml属性的功能。在该框架中,ViewGroup的所有布局属性都传递到其子视图,并与其子视图合并。

我需要打字稿中的类似内容,我想知道是否有可能将父级的类型应用于所有子级的属性,而不必为每个子级指定父级类型。
也就是说,我希望我可以做类似的事情:

interface AttrsOfA {
   a: boolean;
}
interface AttrsOfB {
   b: boolean;
}
function a(childProvider: <AttrsfromParent>() => unknown) {
  return {
    attrs: childProvider<AttrsOfA>(),
  };
}
function b<AttrsfromParent>(attrs: AttrsOfB & AttrsfromParent) {
  return attrs;
}

,并在调用时会键入a和b属性:

a(<AttrsfromParent>() => b<AttrsfromParent>({
    a: true,
    b: true,
  })
);

任何有关如何解决此问题的建议将不胜感激!

0 个答案:

没有答案