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
をアップデートするまでの辛抱なのでこれでお茶を濁しておく。