created: 2023-02-13T06:43:29.079Z

tsconfigのskipLibCheckを使わず、アンビエント宣言を使ってnpmパッケージの型をオーバーライドする

npm-check-updates を使ってpackage.json でザザッとの依存パッケージのバージョンを上げたら p-retry 周りでコンパイルエラーが発生するようになった。

ESModule周りの issue で p-map 自体のバージョンを固定していた。 p-retry あたりと共通の依存ライブラリをもつパッケージがアップデートされてしまったため発生したものかと思われる。

> typecheck
> tsc --noEmit

node_modules/p-retry/index.d.ts:1:9 - error TS2305: Module '"retry"' has no exported member 'OperationOptions'.

1 import {OperationOptions} from 'retry';

node_modules/@types/async-retry/index.d.ts:9:10 - error TS2305: Module '"retry"' has no exported member 'WrapOptions'.

9 import { WrapOptions } from 'retry';

これひとつのために tsconfig の --skipLibCheck を使いたくなかったのと、アンビエント宣言を使って型を上書きした。

declare module 'retry' {
  export type WrapOptions = any;
  export type OperationOptions = any;
}
> typecheck
> tsc --noEmit
# ok

もう少しまともな型定義をしてもよかったかもしれないが、p-map をアップデートするまでの辛抱なのでこれでお茶を濁しておく。

勝間式食事ハック
[ad] 勝間式食事ハック
勝間和代 (Kindle版)