TypeScript:用作对象键

时间:2019-07-16 09:45:36

标签: typescript typescript-typings

出于理智的原因,我需要一个具有功能作为对象中键的对象,例如:

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

const obj = {
  [a]: b
}

这样做的原因是我想将函数a的值映射到函数b,并能够记住并再次删除映射。

现在,我想知道如何在TypeScript中为此编写类型。如果我愿意

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

我会收到错误

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

但是我要如何为此写一个类型?

1 个答案:

答案 0 :(得分:1)

object不能将函数引用作为键,但是可以使用Map来将函数引用作为键

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

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

map.set(a, b);

map.get(a)();