用 TypeScript 寫 Jest 的 matcher
一開始依照 Jest 官方文件 的寫法:
1// 省略實際 function 實作跟 `expect.extend(...)`
2
3declare module 'expect' {
4 interface Matchers<R> {
5 toBeCustomValid(/*...*/): R;
6 }
7}
但還是出現 ... 'toBeCustomValid' does not exist on type 'JestMatchers<... 的錯誤。
後來參考 jest-extended 的寫法:
1declare namespace jest {
2 interface Matchers<R> {
3 toBeCustomValid(/*...*/): R;
4 }
5}
把 matcher function 加到 jest.Matchers(而不是 expect.Matchers)底下就搞定了。
註: Jest 版本是 29.6.4