如何在角度应用程序中声明函数

时间:2017-11-26 10:58:25

标签: angular typescript angular-cli

我使用Angular-cli 1.5

在Angular5中进行了以下设置

typings.d.ts

declare interface String {
   toSentenceCase(): string;
}
declare function _debug(o, message?, type?): void;

app / core / common.ts

String.prototype.toSentenceCase = function () {
    return this.substring(0, 1).toUpperCase() + this.substring(1);
};
function _debug(o, message?, type?) {
    console.log(o);
}
main.ts

中的

import './app/core/common';

现在在我的组件中

console.log('something'.toSentenceCase()); // works
_debug(data); // ERROR ReferenceError: _debug is not defined

为什么原型声明会通过,而函数被忽略了?

1 个答案:

答案 0 :(得分:1)

_debug在模块范围内定义,不是全局的。它可以定义为window属性,但这不适用于Angular服务器端呈现。

在现代JavaScript / TypeScript开发中,特别是Angular,不鼓励依赖全局变量。应该从模块导出函数并导入函数。