针对编译器错误的单元测试打字稿

Ben*_*man 6 unit-testing typescript

Typescript 中是否有库或某种形式的内置支持来编写单元测试来断言某些代码无法编译?如果还可以测试精确的错误消息/代码,那就太好了。

例如,我想断言以下代码:

expect(tsErrorCode`const x="a";const y:number=x`).toBe("TS2322")
Run Code Online (Sandbox Code Playgroud)

或者

expect(tsCompiles`const x="a";const y:number=x`).toBeFalsy()
Run Code Online (Sandbox Code Playgroud)

Tay*_*tay 1

从 Typescript 3.9 开始,有一个名为 @ts-expect-error 的编译器指令注释可以完成您想要的操作。您可以在预期编译器错误之前的行上使用它。如果该行没有错误,Typescript 会给你一个错误。

因此,对于您的示例,您将拥有如下代码:

const x="a";

// @ts-expect-error
const y:number=x;

const y:string=x;
Run Code Online (Sandbox Code Playgroud)

更多文档可以在这里找到:https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-9.html#-ts-expect-error-comments