我公司的工作方式很奇怪。我们使用PHP模板引擎将所有文件复制到一个超文本标记语言中并提供服务。它如下所示:
主html
<script>
(() => {
const foo = 'bar';
{{ include('xxx.js') }}
})
{{ include('zzz.js') }}
</script>
xxx。输电系统
declare const foo: string;
(() => {
console.log(foo);
})()
如您所见,IIFE有两层,一层在主超文本标记语言中,另一层在每个. ts
中,以确保变量的范围正确包含在每个. ts
文件中。然后我使用tsc
将xxx.ts
编译成xxx.js
。
问题是现在我有一个附加文件yyy.ts
,我想在main.html
的IIFE中包含xxx.ts。让我们假设yyy.ts
与xxx.ts
完全相同。
yyy.ts
declare const foo: string;
(() => {
console.log(foo);
})()
在这里,我在两个文件中的foo
处遇到问题。错误是无法重新声明块范围的变量
。
我无法将foo放入全局。d、 tsfile因为它不是全局的,因为它只对xxx有效。js和yyy。js
我做了一些阅读,看到TS编译的方式是,如果文件没有
导入/导出
,它会将所有变量视为全局变量。
我如何解决这个问题?我可以想出两种方法:
找到一种方法设置tsconfig,将每个文件视为单独的文件。我还没有找到解决这个问题的好方法
感谢您的帮助。谢谢
我有种感觉,你不明白我关于生活的观点是用PHP而不是TS来完成的。所以我觉得如果我举一些例子的话可能会有意义。
从我收集到的信息来看,你有一个叫做foo的全局变量,你希望它包含在xxx中
首先,不要把生命放在TS文件中。否则,您将无法重新声明块作用域变量
下面是一个想法,我相信你会做什么后。
文件xxx。TS
declare const foo: string;
const msg = "hello";
console.log(`${msg) ${foo)`);
文件zzz。输电系统
declare const foo: string;
const msg = "goodbye";
console.log(`${msg) ${foo)`);
现在,如果在我们的PHP文件中,我们确实-
<script>
(() => {
const foo = 'bar';
(() => { {{ include('xxx.js') }} })
(() => { {{ include('yyy.js') }} })
})
</script>
所以在上面,首先你有一个全局var foo,但只对你的TS文件是全局的,每个TS文件也可以有它自己的本地var。在上面你可以看到我定义了一个本地var msg,它有hello
因此,如果你运行上面的程序,你应该会看到类似的结果-
hello bar
goodbye bar
以上这些都不会污染你的windows global。
在JavaScript中,我可以这样做: 然后在另一个文件中: 它将定义
我在typescript中声明了一个全局变量,类似于:global。test=“something”我尝试这样做,我得到错误属性“test”在类型“Global”上不存在。
如果我在我的main.js文件中有一个全局变量,我希望可以在由webpad捆绑到同一个构建/bundle.js中的打字稿文件中访问它,我该怎么做?我不能像我想象的那样直接访问它(最后它们在同一个捆绑包中)。我已经阅读了导出/导入/要求,但找不到如何在webpad捆绑包的上下文中应用它。
我知道有一些关于这个问题的问题和帖子/文章,但从我的新手角度来看,不完全是这样。问题是,我有一个主程序监听一个端口,并将调用重定向到一个特定的处理程序。典型结构: 处理程序类似于: 然后,包含函数foo的一些全局变量,基本上是因为函数共享需要它们(例如,当使用容器/堆实现的优先级队列时,它将从全局距离矩阵中获得Swap函数中的优先级当然是可变的)。以及许多其他例子。总之,全局变量... 问题是,正
问题内容: 先前曾问过一个有关如何覆盖环境指令中定义的变量的问题,看来这是不可能的。 我想在一个阶段中设置一个变量,并使其可用于其他阶段。在声明性管道中,似乎唯一的方法是在script {}块中。 例如,我需要在结帐后设置一些变量。因此,在结帐阶段结束时,我有一个script {}块来设置这些var,并且可以在其他阶段访问它们。 这可行,但感觉不对。并且出于可读性考虑,我更愿意在管道的顶部声明这些
问题内容: 我有2个守护程序,它们应该访问相同的变量。我为全局变量创建了第3个文件,每个守护程序都可以访问该变量。但是,当一个更改变量时,另一个仍然看到默认值。 例: glob.py 守护程序a: 守护程序b: 每次我希望我将问题弄清楚时,它将打印0,并且有人可以帮助我。如果您需要更多信息,请随时询问。 问题答案: 看起来(尽管您没有明确告诉您)您正在以一种完全独立的方式运行程序:Python解释