当前位置: 首页 > 知识库问答 >
问题:

如何检查结果类型

公西英叡
2023-03-14

我有一个非常简单的界面类型如下

export interface Amount {
    totalAmount: number;
}

在我的单元测试中,我想检查从API调用返回的对象是否属于这种类型,但我不知道该怎么做。我的API调用如下:

const expectedResponse = {
    totalAmount: 5000
};

amountDataService
    .getAmountData(params)
    .subscribe(
        result => {
            expect(result instanceof Amount).toBe(true);
            expect(result).toEqual(expectedResponse);
        },
        error => {
            fail('Data was not returned successfully.');
        }
    );

但是,行expect(金额的结果实例)。托比(真) 显示错误消息:

'Amount' only refers to a type, but is being used as a value here

如何检查返回对象的类型?


共有1个答案

蔡默
2023-03-14

重复https://stackoverflow.com/a/31748606/390161

无法在运行时检查接口,因为类型信息不会以任何方式转换为已编译的JavaScript代码。

您可以检查特定的属性或方法,并决定要做什么。

module MyModule {
  export interface IMyInterface {
      name: string;
      age: number;
  }
  export interface IMyInterfaceA extends IMyInterface {
      isWindowsUser: boolean;
  }
  export interface IMyInterfaceB extends IMyInterface {

  }

  export function doSomething(myValue: IMyInterface){
    // check for property
    if (myValue.hasOwnProperty('isWindowsUser')) {
      // do something cool
    }
  }
}
 类似资料:
  • 问题内容: 我正在学习Java,它来自C语言,并且发现该类型的语言之间有一个有趣的区别。在C语言中没有/,因此我们需要使用数字类型来表示布尔逻辑()。 我猜在Java中不起作用: 也不会通过类型转换更改条件: 因此,除了要做类似的事情: 还有其他方法可以对类型进行C-ish逻辑检查吗?只是想知道是否有任何Java技巧可以在这样的非布尔类型上使用布尔逻辑。 编辑: 上面的示例非常简单,并且使自己陷入

  • 问题内容: 结果集没有hasNext的方法。我想检查resultSet是否有任何值 这是正确的方法吗 问题答案: 没错,最初的光标指向第一行之前,如果第一次调用,则没有数据。 如果使用此方法,则由于它现在已定位在第一行之后,因此可能必须在复位后立即调用。 但是,应该注意的是,塞弗(Seifer)在下面的回答是对该问题的更优雅的解决方案。

  • 我定义了一个结构… 有时我给它分配一个空会话(因为不可能为零) 然后我想检查一下,如果它是空的: 显然这是行不通的。我怎么写?

  • 问题内容: 拜托,有人能告诉我我在做什么错吗?我只是从表中检索结果,然后将它们添加到数组中。一切正常,直到我检查结果为空为止。 这将获得匹配项,将其添加到我的数组中,并按预期回显结果: 当我尝试检查空结果时,我的代码返回“空”,但不再产生匹配结果: 与往常一样,我们将提供任何帮助。谢谢! 问题答案: 您这样做时会丢掉结果行。那不是您检查是否有任何结果的方法。你做 相关文档在这里:http : //

  • 问题内容: 我应该将“如果查询结果行IS = 1进行验证的代码”替换为什么? 我已经尝试过使用num_rows的多种方法,但无法正常工作。 我的PHP代码: 问题答案: 要么

  • 我在我的项目中使用了JPA和hibernate。 我的pojo类是AggregateDetail,它包含我将从本机查询获得的所有20个变量。 有没有办法实现这个。