我使用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
为什么原型声明会通过,而函数被忽略了?
答案 0 :(得分:1)
_debug
在模块范围内定义,不是全局的。它可以定义为window
属性,但这不适用于Angular服务器端呈现。
在现代JavaScript / TypeScript开发中,特别是Angular,不鼓励依赖全局变量。应该从模块导出函数并导入函数。