【问题标题】:Getting typescript compiler to ignore a line or accept an incorrectly declared function (tsx)让 typescript 编译器忽略一行或接受错误声明的函数 (tsx)
【发布时间】:2018-09-09 20:23:36
【问题描述】:

我有一个要运行的测试,它检查以确保传入正确的参数。但是我的实际文件已经有正确的声明,所以它不会让我编译。我尝试使用 // @ts-ignore 忽略评论,但它不起作用。我怎样才能让它忽略这个错误?

在我的实际文件中,声明:

interface Props {
    maxValue: number;
    fill?: string;
    value: number;
    width: number;
    height: number;
}
new CurvedMeter(props: Props) //how it is declared

在我的测试文件中:

it('throws if any neccesary props are missing', () => {
    const badProps = { maxValue: 100, value: 10, width: 100 };
    new CurvedMeter(badProps); // @ts-ignore <- does not work
    expect.any(Error);
});

【问题讨论】:

  • 为什么不将道具声明为可选?
  • @toskv 在我的网络应用程序中,它们是必要的,我觉得为了测试而更改我的声明违背了目的。该测试旨在检查我是否有maxValue、value、width 和height,否则将引发错误,但该错误基本上为时过早,并且根本无法运行我的网络应用程序。
  • 你可以在你的测试中创建一个存根来扩展 CurvedMeter 并发送一些默认或空参数。
  • @toskv 我已经包含了一个 ts 无法编译的测试。希望现在我根本不想更改我的声明是有意义的。
  • so.. 你的问题是 badProps 不是 Props 类型的?

标签: unit-testing typescript compiler-errors tsx


【解决方案1】:

“hack”是将其转换为any

new CurvedMeter(badProps as any)

【讨论】:

  • 太棒了!完美运行
猜你喜欢
  • 2017-02-13
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 2019-02-04
  • 2018-12-12
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多