TypeScript: Fonksiyon olarak nesne anahtarı


Mantıklı sebeplerden dolayı, bir nesnede anahtar olarak fonksiyonları olan bir nesneye sahip olmam gerekiyor, örneğin:

function a() {}
function b() {}

const obj = {
  [a]: b
}

Bunun nedeni, a fonksiyonunun değerlerini b fonksiyonuna eşlemek ve eşlemeleri tekrar hatırlayıp kaldırabilmektir.

Şimdi bunun için TypeScript'te nasıl tip tanımları yazacağımı merak ediyorum. Eğer yaparsam

type MapFunctions = { [key: Function]: Function };

Hata alacağım

An index signature parameter type must be 'string' or 'number'.ts(1023)

Ama bunun için bir türü nasıl yazardım?

Cevap #1

Bir nesne bir işlev referansını anahtar olarak alamaz, ancak bir işlevi anahtar olarak alabilen bir Map kullanabilirsiniz

function a() {}
function b() {}

const map = new Map<() => void, () => void>();

map.set(a, b);

map.get(a)();