遍历调用签名对象

问题描述 投票:0回答:0

遍历对象的每个属性的经典方法是使用

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)
})
typescript
© www.soinside.com 2019 - 2024. All rights reserved.