遍历对象的每个属性的经典方法是使用
Object.keys(object).forEach()
但是如果你有一个调用签名的对象,你不能这样做,因为没有密钥。
例如:
interface Events {
(evt: 'event', handler: any): void;
(evt: 'other-event', handler: any): void;
};
// with emit being of type Events
const test = Object.keys(emit)
console.log(test) // returns an empty array
所以我的问题是:你如何迭代这样的对象?
编辑:这是更多上下文(这是一些 Vue3 组合 API 代码)。我只是想避免为该界面中的每个调用签名重复最后 3 行。
const lib = new Lib()
const emit = defineEmits<Events>()
lib.on('event', (handler) => {
emit('event', handler)
})