打字稿导入语法错误和其他

时间:2021-07-12 16:33:49

标签: reactjs typescript npm

我使用 create-react-app 在 react 和 typescript 中开发了这个项目。我在整个开发过程中都没有遇到任何问题。现在我想将我的一个组件发布到 npm。

我意识到我需要在现有应用程序的上下文之外构建它才能发布组件。

当我尝试通过 tsc 自己编译打字稿时,它在导入这样的类型的地方给了我语法错误:

src/index.ts:18:1 - error TS1128: Declaration or statement expected.

18 export type {
   ~~~~~~

src/index.ts:18:13 - error TS1005: ';' expected.

18 export type {
               ~

src/index.tsx:22:1 - error TS1128: Declaration or statement expected.

22 export type {
   ~~~~~~

src/index.tsx:22:13 - error TS1005: ';' expected.

22 export type {
               ~

我的tsconfig是这样的(暗中拍了几张之后):

{
  "compilerOptions": {
    "target": "es6",  //Changed from es5 per Erik's suggestion, problem persists
    "lib": [
      "dom",
      "dom.iterable",
      "ESNext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noFallthroughCasesInSwitch": true,
    "module": "ESNext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "noEmit": true,
    "jsx": "react-jsx"
  },
  "include": [
    "src"
  ]
}

我也遇到了关于其他库的错误,比如 Ramda:

例如

node_modules/@types/ramda/index.d.ts:1949:120 - error TS1110: Type expected.

1949 export function toPairsIn<O extends object, K extends Extract<keyof O, string | number>>(obj: O): Array<{ [key in K]: [`${key}`, O[key]] }[K]>;
                                                                                                                            ~~~

node_modules/@types/ramda/index.d.ts:1949:136 - error TS1005: ';' expected.

1949 export function toPairsIn<O extends object, K extends Extract<keyof O, string | number>>(obj: O): Array<{ [key in K]: [`${key}`, O[key]] }[K]>;
                                                                                                                                            ~

node_modules/@types/ramda/index.d.ts:1949:138 - error TS1128: Declaration or statement expected.

1949 export function toPairsIn<O extends object, K extends Extract<keyof O, string | number>>(obj: O): Array<{ [key in K]: [`${key}`, O[key]] }[K]>;
                                                                                                                                              ~

我已经在这个问题上浪费了一天时间,我唯一的目标是发布这个组件,因此对于这方面的任何帮助,我们将不胜感激。我更想弄清楚为什么我的打字稿在没有 react 脚本的情况下无法正确编译,但如果有另一种方法可以发布它,那么也可以。

2 个答案:

答案 0 :(得分:2)

export 关键字是 ES6 语法。在您的 compilerOptions 中,您的 target 是 ES5,因此存在错误。

答案 1 :(得分:1)

我最终通过使用这个过程解决了这个问题:

by default

我认为 create react app 使用的是比我更新的打字稿版本......假设我应该这样做yarn add typescript@next