gpt4 book ai didi

javascript - 如何检查响应是否属于特定接口(interface)类型?

转载 作者:行者123 更新时间:2023-11-28 16:56:26 34 4
gpt4 key购买 nike

我正在编写集成测试。

它通过了,但我知道它是否通过的唯一方法是检查响应类型是否是一个对象,如下所示:

describe('INTEGRATION test1', () => {
it('get user from service success', async () => {
const serviceObj: IFindPropsRequest = {
find: {
findMeta: {
prop1: 'value1',
prop2: 'Individual',
}
};
const resp: ServiceResponse<IFindResponse> = await findProfileService(serviceObj, 'DE');

expect(typeof resp).toBe('object'); // want to change this
});

而不是 expect(typeof resp).toBe('object'); 我正在寻找一种方法来查看是否resp 的类型为 IFindResponse

我怎样才能做到这一点?

最佳答案

简短的回答是:你不能。 interface 是在运行时删除的东西,因此当您的应用程序运行时,无法查看任意传入对象是否可以满足某种类型的接口(interface)。

处理此问题的 typescript 方法是编写类型保护,但它需要您手动编写代码以查看传入类型是否满足接口(interface)。

我们通过不使用 typescript 解决了这个问题。我们编写 JSON-Schema 来进行运行时验证,并且实际上有脚本来获取 JSON-Schema 文件并将它们转换为 typescript 类型以进行静态分析。并不是说这回答了你的问题,但这里的重点是你需要一些在运行时执行此操作的东西,而 Typescript 不是它。

“疯狂的黑客”是如果你得到响应,将其转换为 .ts 文件并在创建的文件上手动调用 typescript 编译器......不确定这是否是你想要走的路......但是这是一种可能性。

关于javascript - 如何检查响应是否属于特定接口(interface)类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59031023/

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