TypeScript中是否可以直接从对象的键创建新类型?

时间:2020-09-21 18:49:23

标签: typescript

TypeScript中是否可以直接从对象的键创建新类型? 在下面的示例中,TypeScript正确地抱怨(MyLibrary.myFunction(2, "bar", undefined); )有关msg引用值的问题,但是我想知道是否有一种方法可以使此方法工作而不必创建单独的类型定义?

'msg' refers to a value, but is being used as a type here.

1 个答案:

答案 0 :(得分:2)

typeof从值中获取类型。然后,将keyof放在其前面,以得到看起来有点奇怪的类型:

const msg = {okay: 'Okay', cancel: 'Cancel'};

function getMsg(id: keyof typeof msg): string {
   return msg[id];
}

Playground