问题描述
和 src
同级目录有一个 types
目录,其中包含 global.d.ts
,如下
declare global {
interface Window {
config: {
url: string;
};
}
}
在组件中访问
window.config = 'x';
ts
显示此错误
Error:(10, 22) TS2339: Property 'config' does not exist on type 'Window'.
我的tsconfig.json
如下
{
"compilerOptions": {
"target": "esnext",
"useDefineForClassFields": true,
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"jsxImportSource": "vue",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"lib": ["esnext", "dom"],
"baseUrl": "./",
"allowJs": true,
"forceConsistentCasingInFileNames": true,
"allowSyntheticDefaultImports": true,
"strictFunctionTypes": false,
"noUnusedLocals": true,
"noUnusedParameters": true,
"experimentalDecorators": true,
"noImplicitAny": false,
"skipLibCheck": true,
"paths": {
"@/*": ["src/*"]
},
"types": [
"vite/client"
]
},
"include": ["src", "types/**/*.d.ts"],
"exclude": ["dist", "node_modules"]
}
问题解决
方法1
一种简单的方法是从你的 global.d.ts
导出一个空对象,如下所示:
declare global {
interface Window {
config: {
url: string;
};
}
}
// 添加此语句后,Typescript/CRA可以提取声明文件:
export {}
方法2
如果你的.d.ts
文件不导入或导出任何内容,您可以省略该declare global
块。文章来源:https://www.toymoban.com/news/detail-854527.html
你需要确保此文件位于@types
目录中,或者你已配置typeRoots
为包含类型声明的目录,例如文章来源地址https://www.toymoban.com/news/detail-854527.html
{
"compilerOptions": {
"typeRoots": [
"./node_modules/@types/",
"./types/"
]
}
}
到了这里,关于global.d.ts 无效问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!