在打字稿中,如果对象的类型具有调用签名,则会有更多的方法和属性(例如apply
,length
等),它们是从功能。现在,ES2015已将Proxy添加到语言中,我们可以将对象与其他原型伪装成函数,如何防止TS添加不存在的道具?
例如,
interface AA {
(): void;
abc: number;
}
const aa: AA = new Proxy({ abc: 12345 }, {
apply() { console.log('aa~') }
});
在我看来,aa
的原语是Object
,并且只有道具abc
,但是TS会提示其他道具。