我试图用自定义函数创建一个全局原型。
我需要这个:
console.log({'active':1, 'profile':1}._state())
{'active':true,'profile':1,'state':'root'}
我尝试:
global.ts
declare global {
interface Object {
_state(): Object;
}
}
Object.prototype._state = function (): Object {
if (this.active === 1) {
this.active = true;
}
if (this.profile === 1) {
this.state = 'root';
}
return this;
};
export {};
当我尝试使用时,失败并显示此错误:
TS2339:类型'{'active':1,'profile':1}上不存在属性'_state()'
在我班上说 component.ts
import '. /global.ts';
@Injectable()
export class AppState{
constructor(){
console.log({'active':1, 'profile':1}._state());
}
}
TS2345:类型'AppState'的参数不能分配给'对象'类型的参数
答案 0 :(得分:1)
因此,尝试像这样更改文件中的代码:
global.ts
interface Object{
_state(): Object;
}
Object.prototype._state = function() {
if (this.active === 1) {
this.active = true;
}
if (this.profile === 1) {
this.state = 'root';
}
return this;
}
然后,您必须将接口插入types.d.ts中,这样编译器才能知道Object中有更改。
typings.d.ts
interface Object{
_state(): Object;
}
最后,将全局文件导入模块中。
app.module.ts
// make sure the path is right
import './global.ts';
应该可以解决问题。我已经尝试过了,console.log就像一个魅力。