我对Typescript世界很陌生。当我使用Proxy
作为类构造函数的返回值时,我偶然发现了一个问题。
想象一下以下代码:
class Container {
constructor() {
return new Proxy(this, containerProxyHandler);
}
}
const container = new Container();
container.sessionStorage = () => {
return new SessionStorage('SESSION_ID');
};
container.session = factory(() => {
return new Session(container.sessionStorage);
});
container.random = protected(() => {
return Math.random();
});
Container
类型旨在用作依赖注入容器。因此,由于它将存储可变数量的服务,因此无法在Container
类内分配属性。
验证后,当向其分配箭头功能时,它会抱怨sessionStorage
类型中缺少属性session
,random
和Container
。
Property 'sessionStorage' does not exist on type 'Container'
我当然可以通过as
自己为容器变量分配一个类型,或者使用工厂函数,但是发现这种方法对于其他人来说很麻烦,例如在库的情况下。
const container = new Container() as { [key: string]: any };
是否有更简单的解决方案,而无需额外的样板代码?
答案 0 :(得分:1)
您可以为它创建一个界面:
interface SomeType {
[name: string]: any;
}