2017-02-27 73 views
1

我的打字稿V2.2.1,我在my-module對象列表: 如何判斷TypeScript:獲取`keyof importedObject`?

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' 

爲什麼打字稿拋出錯誤?

找不到名稱 'importedObject'

,並在同一時間,我可以做到這一點:

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

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

回答

2

這似乎是一種迂迴的方式,但我可以這樣做:

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

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