我正在尝试从一本书中运行一些示例代码,我从Cannot redeclare block-scoped variable 'reducer'
收到错误tsc
,我不确定为什么?
tsc -v
// Version 2.1.0-dev.20160726
然后我像这样运行ts-node:
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
错误
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)
答案 0 :(得分:3)
无法重新声明块范围变量&#39; reducer&#39;来自tsc,我不知道为什么
如果您的文件中没有根级别导入或导出,则会将其视为全局模块。显然还有另一个 全局文件并且声明了变量reducer
。
转移到模块(commonjs是一个很好的选择)。或者将let
更改为var
,这应该会在声明另一个reducer
的位置出错。
答案 1 :(得分:1)
只需在其周围导出命名空间。
export namespace WhatYouLike { ...code... }