在TypeScript模块中声明全局函数

时间:2017-12-25 20:13:23

标签: typescript typescript-typings

我在index.html函数中定义了一组普通的JS函数。我想声明这些函数能够在TypeScript文件中使用它们。这就是我的工作:

declare function getHtmlBasePath(): String;
declare function fbFetchedLoginStatus(): boolean;
declare function getFbAccessToken(): String;
declare function setFbAccessToken(token: String);

但是,为了避免在每个使用它们的TypeScript文件中声明这些文件,我想在一个单独的文件中定义它们并将该文件导入到我想要的任何地方。这样,我无效重复声明,如果我想稍后进行重构,我也得到了IDE的支持。但是,当我在TypeScript文件中定义这些声明并导入它们时,TypeScript编译器将假定这是一个实际上必须导入的模块,而它只是一个声明文件(更像是外部库的头文件)在C / C ++)。

有没有办法让某个TypeScript除了声明集之外没有任何用途,即当你导入它时,TypeScript编译器不会生成require语句?

2 个答案:

答案 0 :(得分:1)

使用export关键字将功能定义导出到单独的文件中:

export function getHtmlBasePath(): String {
    // your code
}

要在任何其他打字稿文件中使用该功能,只需使用import关键字导入该功能。

import {getHtmlBasePath} from 'filename';

filename是写入函数定义的文件的名称。导入该函数后,您可以将该函数用作任何其他正常函数。

答案 1 :(得分:0)

TypeScript编译器足够智能,不会将这些声明转换为require语句。实际上,它们都不会最终出现在已编译的JavaScript代码中。