Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点+;TypeScript:无法重新声明块作用域变量';事件';_Node.js_Typescript - Fatal编程技术网

Node.js 节点+;TypeScript:无法重新声明块作用域变量';事件';

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”。 不

我正在将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”。
不清楚为什么这些是重复的标识符或被标记为重新声明的标识符,特别是在节点的require/module导入上下文中。在require语句中使用标准
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}
然后作为
日历导入即可。