我是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
但我仍然遇到上述编译错误。
答案 0 :(得分:0)
从导入声明中删除* as ...
。试试这个:
import config from '../../../../config'
const logger = config.logger
...
有关详情,请参阅此答案Typescript export vs. default export