TypeScript中无法识别导出对象的类型

时间:2017-04-11 00:10:20

标签: javascript typescript ecmascript-6

我是ES6和TypeScript的新手。我们已经将一些代码重构为ES6,但是如果不是更好地切换到TypeScript而不是更容易编写更易维护的代码。

如果有以下内容,则简化ES6模块config.js

export default {
  logger: require('winston'),
  somethingelse: 'text'
}

我在整个项目的任何地方导入此模块,例如app.js

import * as config from '../../../../config'
const logger = config.logger
...

据我所知,TypeScript中的输入是可选的,如果我只是将文件从.js重命名为.ts,ES6代码应该可以正常运行。如果那是一个错误的假设,请纠正我。但是,编译时出现此错误:

/project/app.ts(7,23): Property 'logger' does not exist on type 'typeof \"/project/config\"'.

这意味着,我来声明一个类型?然后我继续为导出的对象声明了一个接口。

config.js

interface IConfig {
  logger: any;
  somethingelse: string;
}

const defaultConfig: IConfig = {
     logger: winston,
     text: 'text'
}

export default defaultConfig

但我仍然遇到上述编译错误。

1 个答案:

答案 0 :(得分:0)

从导入声明中删除* as ...。试试这个:

import config from '../../../../config'
const logger = config.logger
...
  

有关详情,请参阅此答案Typescript export vs. default export