at backyard

Color my life with the chaos of trouble.

TypeScript(React)でElement implicitly has an 'any' type because type 'typeof globalThis'というエラーを解消する

vitestを触ってみようと思い、viteで作成したTypeScript(React)プロジェクトを立ち上げてテストを書いていた際、下記の記述に従って、vite.config.tsdefineConfig.test.setupFiles で指定したファイルに下記のような記述を追加した。

reactjs.org

globalThis.IS_REACT_ACT_ENVIRONMENT = true;

すると、下記のようなエラーが出てしまったのでそちらを対応した際のメモ。備忘録。

Element implicitly has an 'any' type because type 'typeof globalThis' has no index signature.

解決方法: Global objectの拡張

これはグローバルオブジェクトに存在しないプロパティにアクセスしようとしたときに発生している。 このエラーを解決するためにglobel objectを拡張する必要がある。

よって、以下のように index.d.ts を作成し、

touch src/types/index.d.ts
vim src/types/index.d.ts

下記の記述を追加した。

declare global {
    var IS_REACT_ACT_ENVIRONMENT: boolean
}

export {}

これでエラーは解決した。

気がついたら最近のJS/TS界隈もどんどん新しいものが出てきているので、浦島太郎状態にならないように新しいものも少しずつ触っていきたい今日このごろ。