create-react-app typescript global.d.ts 文件不起作用

IT技术 reactjs typescript create-react-app
2021-04-10 05:10:00

我把我的global.d.ts文件放在src这样的文件夹中

declare global {
  interface Window {
    config: {
      url: string;
    };
  }
}

然后在我的组件中的某个地方做

window.config = 'x';

ts显示此错误

Error:(10, 22) TS2339: Property 'config' does not exist on type 'Window'.

create-react-app 用于此应用程序。

"react-scripts": "3.0.1",
"typescript": "3.5.3"

这是tsconfig.json看起来像

{
  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "preserve"
  },
  "include": [
    "src"
  ]
}
2个回答

一种更简单的方法是从您的 导出一个空对象global.d.ts,如下所示:

declare global {
  interface Window {
    config: {
      url: string;
    };
  }
}

// Adding this exports the declaration file which Typescript/CRA can now pickup:
export {}
非常好的零配置方法。
2021-06-12 05:10:00

如果您的.d.ts文件不导入或导出任何内容,您可以省略该declare global块。

您需要确保此文件位于@types目录中,或者您已将其配置typeRoots为包含类型声明的目录,例如

{
  "compilerOptions": {
    "typeRoots": [
      "./node_modules/@types/",
      "./custom/path/to/declarations/"
    ]
  }
}

可以在此处找到有关此的更多信息