2016-07-27 36 views
1

本からいくつかのサンプルコードを実行しようとしていますが、Cannot redeclare block-scoped variable 'reducer'tscからエラーが発生しています。ブロックスコープの変数 'reducer'(typescript)を再宣言できません

tsc -v 
// Version 2.1.0-dev.20160726 

その後、私はそうのようなTS-ノードを実行します。

ts-node 01-identity-reducer.ts 

01-識別-reducer.ts:

interface Action { 
    type: string; 
    payload?: any; 
} 

interface Reducer<T> { 
    (state: T, action: Action): T; 
} 

let reducer: Reducer<number> = (state: number, action: Action) => { 
    return state; 
}; 

console.log(reducer(0, null)); // should output -> 0 

ERROR

TSError: ⨯ Unable to compile TypeScript 
01-identity-reducer.ts (10,5): Cannot redeclare block-scoped variable 'reducer'. (2451) 
    at getOutput (/Users/person/.nvm/versions/node/v5.0.0/lib/node_modules/ts-node/src/index.ts:258:17) 
    at /Users/person/.nvm/versions/node/v5.0.0/lib/node_modules/ts-node/src/index.ts:267:16 
    at Object.compile (/Users/person/.nvm/versions/node/v5.0.0/lib/node_modules/ts-node/src/index.ts:403:17) 
    at loader (/Users/person/.nvm/versions/node/v5.0.0/lib/node_modules/ts-node/src/index.ts:289:33) 
    at Object.require.extensions.(anonymous function) [as .ts] (/Users/person/.nvm/versions/node/v5.0.0/lib/node_modules/ts-node/src/index.ts:306:14) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:311:12) 
    at Function.Module.runMain (module.js:457:10) 
    at Object.<anonymous> (/Users/person/.nvm/versions/node/v5.0.0/lib/node_modules/ts-node/src/_bin.ts:179:12) 
    at Module._compile (module.js:425:26) 

答えて

3

再宣言することはできませんブロックスコープTSCから変数「減速を」と

は、あなたがそれを考慮し、あなたのファイルのルートレベルのインポートやエクスポートを持っていない場合は、なぜ私はわからないんだけどa グローバルモジュール。明らかに別のファイルがでもグローバルであり、変数reducerが宣言されています。

修正

モジュールに移動します(commonjsが最適です)。代わりにletvarに変更すると、別のreducerが宣言されている場所でエラーが表示されるはずです。

PS:And IDE can give a much nicer experience here giving you the other variable declaration locations upfront

1

名前空間をエクスポートするだけです。 export namespace WhatYouLike { ...code... }

関連する問題