271

我有一个名为的打字稿文件Projects.ts,我想引用在名为bootbox.js.

我想访问bootbox从 TypeScript 类中调用的变量。

可能吗?

4

7 回答 7

438

您需要告诉编译器它已被声明:

declare var bootbox: any;

如果您有更好的类型信息,您也可以添加它,代替any.

于 2012-11-06T14:14:36.080 回答
54

对于那些还不知道的人,您必须像这样将declare声明放在您的外面:class

declare var Chart: any;

@Component({
  selector: 'my-component',
  templateUrl: './my-component.component.html',
  styleUrls: ['./my-component.component.scss']
})

export class MyComponent {
    //you can use Chart now and compiler wont complain
    private color = Chart.color;
}

TypeScript您想要定义可能不是源自TypeScript文件的变量的地方使用 declare 关键字。

就像你告诉编译器,我知道这个变量在运行时会有一个值,所以不要抛出编译错误。

于 2017-06-29T17:46:50.337 回答
19

如果它是您引用但从不变异的东西,请使用const

declare const bootbox;
于 2017-04-04T05:21:56.320 回答
15

Sohnee 解决方案更清洁,但您也可以尝试

window["bootbox"]
于 2017-01-10T15:20:31.857 回答
7

如果您想在整个项目中引用此变量,请在某处创建d.ts文件,例如globals.d.ts. 用你的全局变量声明填充它,例如:

declare const BootBox: 'boot' | 'box';

现在你可以在项目的任何地方引用它,就像这样:

const bootbox = BootBox;

这是一个例子

于 2019-09-18T17:49:08.793 回答
3
// global.d.ts
declare global {
  namespace NodeJS {
    interface Global {
      bootbox: string; // Specify ur type here,use `string` for brief
    }
  }
}

// somewhere else
const bootbox = global.bootbox
// somewhere else
global.bootbox = 'boom'
于 2020-09-28T01:29:20.740 回答
-6

下载引导箱类型

然后在 .ts 文件中添加对它的引用。

于 2018-03-21T12:23:17.543 回答