我想定义一个全局可用的帮助器
global.p = console.log.bind(console)
所以我可以使用p('some message')
代替console.log('some message')
。
但TypeScript抱怨p
未定义。有没有办法告诉TypeScript编译器,每个文件中都有可用的全局变量p
?
答案 0 :(得分:2)
智能移动以抽象日志记录,因此您不会在整个程序中直接使用直接依赖于user:age:12
的代码。
您可以将其声明为全局已存在:
34
但如果你不得不把它放在每个文件中,你也可以这样做:
console.log
使用declare var p: (message: any, ...additionals: any[]) => void;
包装器创建日志记录模块。
答案 1 :(得分:2)
我想我知道您要做什么-您希望打字稿理解<nav id="site-navigation" class="main-navigation">
<button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false">Primary Menu</button>
<div class="menu-main-container"><ul id="primary-menu" class="menu nav-menu" aria-expanded="false"><li id="menu-item-219" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-88 current_page_item menu-item-219"><a href="http://shegames.net/">Home</a></li>
<li id="menu-item-1312" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1312"><a href="http://shegames.net/my-account">My Account</a></li>
<li id="menu-item-1313" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1313"><a href="http://shegames.net/checkout">Checkout</a></li>
<li id="menu-item-1314" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1314"><a href="http://shegames.net/cart">Cart</a></li>
<li id="menu-item-1315" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1315"><a href="http://shegames.net/shop">Shop</a></li>
</ul></div> </nav>
变量是在全局范围内设置的,而不必在每个文件中都p
。
如果我没记错的话,您需要做一个环境声明:
import { p } from ...
不必在每个文件中都声明。将其放在名为declare const p: (message: string) => void // or whatever
的文件夹中的d.ts
文件中,然后将该文件包含在tsconfig中:
typings/
注意:您的d.ts文件无法导入任何其他模块。但是它可以使用在其他d.ts文件中声明的其他环境类型,而无需导入它们。如果您导入了某些内容,那么打字稿将不会将您的文件视为环境声明,它将无法正常工作。
答案 2 :(得分:1)
import {Injectable} from '@angular/core';
@Injectable()
export class GlobalStatus {
private _status : any;
constructor() {
this._status = {
"GlobaConfigVersion": "0.0.0"
}
}
getStatusValue(valKey: string): any {
return this._status[valKey];
}
setStatusValue(valKey: string, theStatus: any): any {
this._status[valKey] = theStatus;
}
}
&#13;
这是我用于全局配置的服务。然后我可以用这种方式设置/获取全局变量:
import { GlobalStatus } from './globalStatus.service';
//setter
this.globalStatus.setStatusValue("yourValue", value)
// getter
this.globalStatus.getStatusValue("yourValue")
&#13;
答案 3 :(得分:0)
如果您只想告诉TypeScript使用p变量,可以在文件的头部声明它:
declare var p: any;