在之前使用 vue 開發項目時,簡單粗暴的辦法就是将方法挂載到 vue.prototype 上,比如
在使用時可直接使用 this 來調用, 即 this.myfn()。
但是 react 貌似沒有這種寫法,于是經過一番查找發現可以将方法挂載到 window 上,即
但是尴尬的事情發生了,由于項目中使用的是 typescript,是以會報錯 property 'myfn' does not exist on type 'window & typeof globalthis'. ['屬性'myfn'在類型'window & typeof globalthis上不存在]
可以使用 typescript 關鍵字 declare 來更改類型限制,在根目錄下建立 shims.d.ts 檔案
此時還會報錯 augmentations for the global scope can only be directly nested in external modules or ambient module declarations. [全局作用域的擴充隻能直接嵌套在外部子產品或環境子產品聲明中]
隻需将 shims.d.ts 檔案變成子產品即可,也可確定與其他檔案沒有成員沖突
在其他檔案使用時可直接用 window 來調用,即 window.myfn()。