ts-jest:TypeScript 类型错误被忽略

ts-jest: TypeScript type errors are ignored

我刚开始学习 TypeScript 并尝试了一些带有 jest 单元测试的简单应用程序(使用 ts-jest):

简单app.ts模块:

function greet(person: string): string {
  return `Hello, ${person}`;
}

exports.greet = greet;

简单app.spec.ts代码:

const greetObject = require('../app');

greetObject.greet(1);

describe('greet function', () => {
  it('should return greeting', () => {
    expect(greetObject.greet('Dude')).toEqual('Hello, Dude');
  });
  it('should throw type exception', () => {
    const spy = jest.spyOn(greetObject, 'greet');
    greetObject.greet(1);
    /** @todo what should happen ? */
  });
});

问题是:我是否应该收到类型错误?事实上,我在这里没有收到任何错误。

但是,如果我在 app.ts 文件中使用错误的参数类型调用 greet,整个测试套件就会失败。

我在 TypeScript 单元测试中遗漏了什么吗?

UPD. 将要求转换为 ES6 导入。 TypeScript 诊断现在可以正常工作,但我仍然不知道我是否可以对错误的类型做任何事情并测试这些情况。任何建议表示赞赏。

should I receive type error or not ?

这里没有。

你测试的是你的TS文件的JS输出。

TS 错误是编译时间错误。

I still don't know if I can do anything with wrong types and test those situations.

TypeScript 在运行时没有类型检查,因为运行时 不是 TypeScript,而是 JavaScript.

如果你想验证接收到的一些对象,你应该实现实际的检查功能。

可能有帮助: