1
Node + ES6プロジェクトをTypeScriptに変換する処理中です。私はES6を目指しています(ノード7.xを実行しているので)、Mapを使用しています。これらが重複識別子であるか再宣言として、特に文脈では、タグ付けされている理由は明らかではないノード+ TypeScript:ブロックスコープの変数 'events'を再宣言できません
src/actions.ts(3,9): error TS2451: Cannot redeclare block-scoped variable 'events'
src/calendar.ts(5,10): error TS2300: Duplicate identifier 'fetchEvents'.
src/index.ts(3,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'actions' must be of type 'Map<any, any>', but here has type 'any'.
:tsc -p
リターンを実行
ノードの必須/モジュールインポートの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) {
...
actions.ts
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"
]
}
これは、TypeScriptがインポート/名前空間を異なる方法で処理するように見えるため、これは機能します。私はこれに関する良い文書を見つけることができませんでしたが、 'module.exports = {events、fetchEvents}'を使用して、次に 'calendar'としてインポートすることができます。 – elithrar