如何判断TypeScript:获取`keyof importedObject`?

时间:2017-02-27 20:12:44

标签: typescript

我的TypeScript v2.2.1,我有my-module中的对象列表:

export const OneObj = { prop1: 'value1' }
export const TwoObj = { prop2: 'value2' }

我想在另一个模块中创建新类型:

import * as importedObject from './my-module';

console.log(importedObject)
// { OneObj: { prop1: 'value1' }, TwoObj: { prop2: 'value2' } }}

type NewType = keyof importedObject;
// Error: Cannot find name 'importedObject'

为什么TypeScript会抛出错误?

  

找不到名称' importedObject'

与此同时,我可以这样做:

type NewType = keyof { OneObj: { prop1: 'value1' }, TwoObj: { prop2: 'value2' } };

// NewType === ("OneObj" | "TwoObj")

1 个答案:

答案 0 :(得分:3)

这似乎是一种迂回的方式,但我可以这样做:

import * as importedObject from './my-module';

type NewType = keyof typeof importedObject; // OK: "OneObj" | "TwoObj"