跨文件键入全局变量
Typescript Global Variable across Files
我在一个没有模块或类的.ts文件中创建了一个变量。它看起来基本上就像一个普通的JavaScript文件。我希望这个变量可以在变量内部的类内的另一个.ts文件中访问。
例如,我有:
foo.ts
var foo = "some stuff";
bar.ts
module Bar {
export class BarClass {
function getFoo() {
return foo;
}
}
}
我不确定这是最好的方法。我试过使用window.bar全局变量,但似乎不起作用。我是TypeScript的新手,跳到了一个更大的代码库中,所以如果你需要任何进一步的澄清,请告诉我。
谢谢!
TypeScript文件不知道您在其他TypeScript文件中所做的任何事情,除非它们引用了它们。所以在bar.ts
的顶部应该有一条线
/// <reference path="foo.ts" />
根据您的问题,不确定是编译、IDE还是运行时问题。尽管如此,我还是想和大家分享一下,避免全局变量出现这些问题的一个好方法是创建自己的"类型"文件,并将其列在tsconfig.json
的typeRoots
属性中。
例如,我过去做过的一件事是创建一个console.log的快捷方式,它还可以用我想要的样式为消息着色。就像这样…
const pretty = (style: string, ...anything) => {
anything.forEach(something =>
console.log(`%c ${something} `, style));
return moment().format('[Logged @] HH:MM:SS');
}
所以我不必在我使用的每个TS文件中都使用declare var pretty
,我会创建src/myTypes/globals/index.d.ts
...
declare function pretty(style: string, ...anything);
...
然后在我的tsconfig.json 中
{
"compilerOptions": {
...
"typeRoots": ["src/myTypes"]
因此,在您的情况下,如果foo
是一个您知道在运行时会存在的var,您可以简单地在类型文件中使用declare var foo: string;
,将其列在typeRoots中,并在所有项目文件中愉快地使用它,而无需任何进一步的配置。
相关文章:
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 如何使全局变量仅特定于该文件
- 在节点中创建文件全局变量
- 对CommonJS配置文件使用全局变量
- 什么's是处理多个js文件之间交互的简单方法,同时避免溢出全局变量
- 全局变量确实'在script标记中的外部.js文件之后,nt工作
- 在blackberry cascades 10中访问多个qml文件中的全局变量
- 使用 grunt 在 javascript 文件中“嵌入”一个全局变量
- 更改.js文件中全局变量的值
- NodeJS与AngularJS,所需的HTML文件不是跨控制器的数据绑定全局变量
- js 文件中的全局变量
- 节点模块包括数据文件作为全局变量
- 在两个js文件之间共享全局变量
- 从自定义Javascript文件v6.5访问SugarCRM全局变量$current_user
- 从JSON文件中获得的值保留在解析函数上;t被分配给全局变量
- 跨多个html和全局变量引用的公共js文件
- 全局变量如何在两个javascript文件中的Function中的javascript中工作
- 具有多个文件的JavaScript中的全局变量
- 需要从js文件中引用Java全局变量
- 跨文件键入全局变量