我的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"
]
}
答案 0 :(得分:6)
一种更简单的方法是从global.d.ts
中导出一个空对象,如下所示:
declare global {
interface Window {
config: {
url: string;
};
}
}
// Adding this exports the declaration file which Typescript/CRA can now pickup:
export {}
答案 1 :(得分:1)
如果您的.d.ts
文件未导入或导出任何内容,则可以省略declare global
块。
您需要确保此文件位于@types
目录中,或者已将typeRoots
配置为包括用于类型声明的目录,例如
{
"compilerOptions": {
"typeRoots": [
"./node_modules/@types/",
"./custom/path/to/declarations/"
]
}
}
有关此内容的更多信息,请here。