打字稿:找不到名称“代理”

时间:2018-06-19 15:17:53

标签: angular typescript ecmascript-6

我需要声明一个类型为Proxy的新变量,该变量来自ES6规范:

myProxy: Proxy;

但是我遇到下一个错误:

  

找不到名称“代理”。

我该如何解决?

1 个答案:

答案 0 :(得分:2)

假设您已将目标设置为es2015或使用es2015选项包含了lib的库,则可以创建一个Proxy。诀窍是Proxy不是类型,而是构造函数。来自es2015 lib:

interface ProxyConstructor {
    revocable<T extends object>(target: T, handler: ProxyHandler<T>): { proxy: T; revoke: () => void; };
    new <T extends object>(target: T, handler: ProxyHandler<T>): T;
}
declare var Proxy: ProxyConstructor;

因此,要创建代理,您需要调用构造函数:

let foo = new Proxy({ value: 0 }, {
    get: (v) => v.value * 2
});

foo的类型将与目标对象的类型相同。

相关问题