【问题标题】:Type of exported object not recognized in TypeScriptTypeScript 无法识别导出对象的类型
【发布时间】:2017-04-11 00:10:20
【问题描述】:

我是 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

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

【问题讨论】:

    标签: javascript typescript ecmascript-6


    【解决方案1】:

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

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

    有关更多信息,请参阅此答案Typescript export vs. default export

    【讨论】:

      猜你喜欢
      • 2021-04-01
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      • 2019-11-12
      • 2022-01-18
      • 2017-08-26
      相关资源
      最近更新 更多