我目前在许多文件中都有这样的关系,我正在寻找一种创建组合函数的方法,以使这些函数之间的关系不易出现人为错误。
type XRaw = {};
type X = Merge<XRaw, {}>;
type XProto = Merge<X, {}>;
type XProtoPrepped = Merge<XProto, {}>;
类似这样的东西:
type [XRaw, X, XProto, XProtoPrepped] = Build<{}, {}, {}, {}>
我还想将{}
限制为仅具有原始XRaw
中的属性,并禁止输入无法识别的属性。
这可能吗?
答案 0 :(得分:0)
我还想限制{}仅在原始XRaw中具有该属性,并禁止输入无法识别的属性。
想要exact
类型的声音。
不幸的是TypeScript尚不支持确切的类型。这是TypeScript团队提出的相关问题:https://github.com/Microsoft/TypeScript/issues/12936
答案 1 :(得分:0)
interface Discover <Raw, RawOverrides, Proto, ProtoOverrides> {
Raw: Raw;
RawOverrides: Merge<Raw, RawOverrides>;
Proto: Merge<Proto, Merge<Raw, RawOverrides>>;
ProtoOverrides: Merge<ProtoOverrides, Merge<Proto, Merge<Raw, RawOverrides>>>;
}
type CatDiscover = Discover<{
id: string;
}, {}, {}, {}>
type CatRaw = CatDiscover['Raw'];
type Cat = CatDiscover['RawOverrides'];
type CatProto = CatDiscover['Proto'];
type CatProtoPrepped = CatDiscover['ProtoOverrides'];