網站搜尋

如何在 TypeScript 3.x 中使用匯入的類型描述 window 對象中的自訂屬性


我如何宣告 ("typescript": "3.x.x") 裡面,window 對象中有某個變數及其類型?

例如,我有 window.foo={ bar: 'baz' },我該如何宣告它?以前這樣做的方法是:

declare global {
  interface Window {
    foo: { bar: string }
  }
}

而且它產生了這個錯誤

TS2669: 全域範圍的增強只能直接巢狀於外部模組或環境模組宣告中。

看起來只要在某個 d.ts 文件中添加一條記錄就可以了。像這樣:

interface Window {
  foo: { bar: string }
}

但據我所理解,在這種情況下,我無法在該文件中導入某些類型並在聲明中使用它們,例如用於 string 的情況。

那如果我想做類似那樣的事情呢:

import { MyTypeFromSomewhere } from './somewhere'
interface Window {
  foo: { bar: MyTypeFromSomewhere }
}

我如何能擴展 Window 介面並為它指定新屬性的類型?