gpt4 book ai didi

typescript - 为具有所有可选属性的接口(interface)制作类型保护

转载 作者:行者123 更新时间:2023-12-04 10:44:17 24 4
gpt4 key购买 nike

<分区>

我有一个函数 makeMergedState,它接受一个对象或一个 ICustomState 类型的数组。

函数包含条件语句,具体取决于输入是有效的 ICustomState 还是 ICustomState[]。如果输入是错误类型转换的无效对象,我希望函数抛出。

这是我想要成功的测试用例:

it("throws on invalid input", () => {
expect(() => makeMergedState({ test: "" } as ICustomState)).toThrow();
});

ICustomState 是一个仅包含可选属性的 TypeScript 接口(interface)。我可以用这样的函数来保护数组:const isCustomStateArray = (p: any): p 是 ICustomState[] => !!p[0];

但是,我找不到制作等效的 isCustomState 类型保护的方法,我认为这是类型保护如何与类型系统一起工作的限制。

根据 this GitHub 问题,可以使用 tag types 解决此限制,但我不确定如何。

非常感谢任何建议。

编辑:Codesandbox example

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com