我正在像这样从index.js
导出所有的减速器:
export checking from 'reducers/Checking';
export saving from 'reducers/Saving';
export overdraft from 'reducers/Overdraft';
..........
当我尝试将Typescript集成到我的项目中时,在^上方的每一行上开始出现以下错误:
Declaration or statement expected
我的预设中有stage-0
支持这种语法,但仍然会出现错误。
tsconfig.json
有人可以指导我如何消除该错误吗?
{
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "es2015",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react"
},
"include": [
"src"
]
}
答案 0 :(得分:1)
export * from 'reducers/Checking';
export * from 'reducers/Saving';
export * from 'reducers/Overdraft';
您必须尝试这个。
答案 1 :(得分:0)
问题是您使用的导出形式不存在。您可以在规范here中找到表单的列表,但没有export x from "y"
表单。
在我看来,您正在尝试将每个模块的默认导出重新导出为命名导出。也就是说,例如,您在export default ...
中有reducers/Checking.ts
,并希望将其从index.ts
重新导出为checking
。如果是这样,则必须显式使用命名形式和标识符default
:
// Re-exports the default export of each module
export { default as checking } from 'reducers/Checking';
export { default as saving } from 'reducers/Saving';
export { default as overdraft } from 'reducers/Overdraft';
但是,如果您在export const checking ...
中命名了类似reducers/Checking.ts
的出口,并且您尝试重新出口所有其命名出口< / strong>,来自index.ts
,您可以这样做:
// Re-exports all named exports from each module:
export * from 'reducers/Checking';
export * from 'reducers/Saving';
export * from 'reducers/Overdraft';
或者,如果您尝试仅导出名为export 的单个名称,则可以这样做:
// Re-exports a named export from each module:
export { checking } from 'reducers/Checking';
export { saving } from 'reducers/Saving';
export { overdraft } from 'reducers/Overdraft';
最后,如果您尝试为每个模块导出一个模块命名空间对象(该对象具有每个模块导出的属性),您可以这样操作:< / p>
// Re-exports a named export from each module:
export * as checking from 'reducers/Checking';
export * as saving from 'reducers/Saving';
export * as overdraft from 'reducers/Overdraft';
以上所有假设reducers
在node_modules
中。如果它是您自己的目录,则需要在这些模块说明符的开头(./
而不是from './reducers/Checking'
){1>}。
单独:要使用JavaScript模块语法(对于 E CMA S cript M 规则通常称为ESM),您需要告诉TypeScript这是什么你在做。有两种方法可以做到:
如果您拥有from 'reducers/Checking'
或更高版本,TypeScript将假定您使用的是JavaScript模块(而不是CommonJS等)
您可以使用"target": "ES6"
明确选择加入JavaScript模块。