Node.js 节点+;TypeScript:无法重新声明块作用域变量';事件';
我正在将Node+ES6项目转换为TypeScript。我的目标是ES6(因为我正在运行Node7.x)并使用Map 运行Node.js 节点+;TypeScript:无法重新声明块作用域变量';事件';,node.js,typescript,Node.js,Typescript,我正在将Node+ES6项目转换为TypeScript。我的目标是ES6(因为我正在运行Node7.x)并使用Map 运行tsc-p返回: src/actions.ts(3,9):错误TS2451:无法重新声明块作用域变量“事件” src/calendar.ts(5,10):错误TS2300:重复标识符“fetchEvents”。 src/index.ts(3,5):错误TS2403:后续变量声明必须具有相同的类型。变量“actions”的类型必须为“Map”,但此处的类型为“any”。 不
tsc-p
返回:
src/actions.ts(3,9):错误TS2451:无法重新声明块作用域变量“事件”
src/calendar.ts(5,10):错误TS2300:重复标识符“fetchEvents”。
src/index.ts(3,5):错误TS2403:后续变量声明必须具有相同的类型。变量“actions”的类型必须为“Map”,但此处的类型为“any”。
const
更严重地破坏了这一点
calendar.ts
const { rp } = require("request-promise")
var events = <any> {}
// both are exported via module.exports = { events, fetchEvents }
function fetchEvents(key: string, url: string, options: object) {
...
const moment = require("moment")
var { events, fetchEvents } = require("./calendar")
var actions = new Map()
tsconfig.json
{
"compilerOptions": {
"target": "es6",
"outDir": "./built",
"declaration": true,
"rootDir": ".",
"baseUrl" : "./packages",
"experimentalDecorators": true,
"moduleResolution": "node",
"noImplicitAny": false,
"strictNullChecks": true,
"noImplicitReturns": true,
"noImplicitThis": true
},
"include": [
"src/**/*"
],
"exclude": [
"dist",
"node_modules",
".vscode"
]
}
不确定
var{…
构造是否有效。var
使变量作用域具有全局性
如果您在操作中使用。ts:
const moment = require("moment")
import calendar = require("./calendar");
// console.log(calendar.events)
?这很有效,因为TypeScript处理导入/名称空间的方式似乎不同。我找不到关于这方面的好文档,但使用
module.exports={events,fetchEvents}
然后作为日历导入即可。