【发布时间】: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