在我的Webpack配置中,我有以下内容。
var config = require("./webfig");
config.module = config.module || [];
config.plugins.push(new webpack.DefinePlugin({ "Hazaa": "Shazoo" }));
module.exports = config;
但是,在TS文件中,当我尝试使用下面的行访问它时,发件人抱怨这样的事情是不可用的。我并不完全确定如何对其进行故障排除,并且googlearching对此特定问题的影响不大(至于我已经正确识别了诊断)。
如何在TypeScript代码中访问 Hazaa ?
修改
根据评论,我引入了以下更改。
config.plugins.push(new webpack.DefinePlugin({ "Hazaa": JSON.stringify("Shazoo") }));
在与预先存在的 index.d.ts 相同的目录中创建名为 app.d.ts 的文件。它只包含declare var Hazaa: string;
,我就是这样从 typings.json 引用它。
{
"globalDependencies": {
"core-js": "registry:dt/core-js#0.9.7+20161130133742",
"app": "file:./typings/app.d.ts"
}
}
我还从 tsconfig.json 部分文件中引用了它,如下所示。
{
"compilerOptions": {
"baseUrl": "./source/application",
"target": "es5",
"experimentalDecorators": true,
"emitDecoratorMetadata": true
},
"files": [
"typings/index.d.ts",
"typings/app.d.ts"
],
"include": [ "source/**/*" ],
"exclude": [ "node_modules" ]
}
没有任何帮助 - 当我在组件的构造函数中console.log(Hazaa)
时,我收到编译时错误,说明找不到该名称。
答案 0 :(得分:3)
由于TypeScript不知道在构建项目时注入到代码中的webpack全局变量(使用DefinePlugin定义的变量),因此它会产生错误。你必须告诉TypeScript Hazaa
是一个string类型的变量,它将在构建时进行评估。
因此请使用.d.ts文件声明Hazaa
。
declare var Hazaa: string;