用 TypeScript 寫 Jest 的 matcher


一開始依照 Jest 官方文件 的寫法:

// 省略實際 function 實作跟 `expect.extend(...)`

declare module 'expect' {
  interface Matchers<R> {
    toBeCustomValid(/*...*/): R;
  }
}

但還是出現 ... 'toBeCustomValid' does not exist on type 'JestMatchers<... 的錯誤。

後來參考 jest-extended 的寫法:

declare namespace jest {
  interface Matchers<R> {
    toBeCustomValid(/*...*/): R;
  }
}

把 matcher function 加到 jest.Matchers(而不是 expect.Matchers)底下就搞定了。


註: Jest 版本是 29.6.4

其他相關