10

我在没有模块或类的 .ts 文件中创建了一个变量。它看起来就像一个普通的 JavaScript 文件。我希望这个变量可以在变量内部的类中的另一个 .ts 文件中访问。

所以例如我有:

脚.ts

var foo = "some stuff";

bar.ts

module Bar {
    export class BarClass {
        function getFoo() {
             return foo;
        }
    }
}

我不确定这是最好的方法。我试过使用 window.bar 全局,但这似乎不起作用。我是 TypeScript 的新手,正在跳入更大的代码库,所以如果您需要任何进一步的说明,请告诉我。

谢谢!

4

2 回答 2

12

TypeScript 文件不知道你在其他 TypeScript 文件中所做的任何事情,除非它们有对它们的引用。所以在bar.ts你的顶部应该有一条线

/// <reference path="foo.ts" />
于 2013-06-27T21:20:20.723 回答
4

根据您的问题,不确定您遇到的是编译、IDE 还是运行时问题。不过,我想我会分享一个避免全局变量出现这些问题的好方法是创建您自己的“类型”文件并将其列在typeRoots您的tsconfig.json.

例如,我过去做过的事情是创建一个到 console.log 的快捷方式,它还可以用我希望的样式为消息着色。像这样...

const pretty = (style: string, ...anything) => {
  anything.forEach(something => 
    console.log(`%c ${something} `, style));
  return moment().format('[Logged @] HH:MM:SS');
}

所以我不必declare var pretty在我使用它的每个 TS 文件中创建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 中列出它,并在您的所有项目文件中愉快地使用它,而无需任何进一步的配置。

于 2017-11-30T13:22:33.353 回答