typescript - 如何告诉 TypeScript : to get `keyof importedObject` ?

标签 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 会抛出错误?

Cannot find name 'importedObject'

同时,我可以这样做:

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

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

最佳答案

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

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

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

关于typescript - 如何告诉 TypeScript : to get `keyof importedObject` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42494914/

相关文章:

javascript - 在 TypeScript 和 MongoDB 中仅获取没有时间的日期

Angular 6 - 无法订阅从服务返回的数据

reactjs - typescript 错误 : Property 'X' does not exist on type 'Window'

typescript - @Input() 返回 [object Object] Typescript Angular2

TypeScript 单击事件处理程序

typescript - --out 仅支持 'amd' 和 'system' 模块

javascript - 过滤Json数组多键

typescript - 升级到 Typescript 2.9.1 后出现 "TS2300: Duplicate identifier ' 帐户错误

switch case 语句中的 Typescript 类型安全

angular - Typescript变量中问号(?)的用途是什么?