@ types / jest index.d.ts ошибка возврата файла - PullRequest
0 голосов
/ 12 февраля 2019

Я просто npm установил @ types / jest в мое стартовое приложение stenciljs, и теперь, когда я начинаю свой проект, недавно установленный пакет узла возвращает несколько ошибок.Вот ошибки, которые он возвращает, когда я захожу на npm start мой проект:

[ ERROR ]  TypeScript: node_modules/@types/jest/index.d.ts:39:30
           A rest parameter must be of an array type.

     L39:  type ArgsType<T> = T extends (...args: infer A) => any ? A : never;

[ ERROR ]  TypeScript: node_modules/@types/jest/index.d.ts:218:112
           A tuple type element list cannot be empty.

    L217:   */
    L218:  ction spyOn<T extends {}, M extends keyof T>(object: T, method: M, accessType: 'get'): SpyInstance<T[M], []>;
    L219:  function spyOn<T extends {}, M extends keyof T>(object: T, method: M, accessType: 'set'): SpyInstance<void, [T[M]]>;

[ ERROR ]  TypeScript: node_modules/@types/jest/index.d.ts:220:144
           Type 'ArgsType<T[M]>' does not satisfy the constraint 'any[]'. Type
           '{}' is not assignable to type 'any[]'. Property 'length' is missing
           in type '{}'.

    L219:  function spyOn<T extends {}, M extends keyof T>(object: T, method: M, accessType: 'set'): SpyInstance<void, [T[M]]>;
    L220:   T, method: M): T[M] extends (...args: any[]) => any ? SpyInstance<ReturnType<T[M]>, ArgsType<T[M]>> : never;
    L221:  /**

[ ERROR ]  TypeScript: node_modules/@types/jest/index.d.ts:807:50
           Type 'ArgsType<T[P]>' does not satisfy the constraint 'any[]'. Type
           '{}' is not assignable to type 'any[]'.

    L806:  type Mocked<T> = {
    L807:      [P in keyof T]: T[P] & MockInstance<T[P], ArgsType<T[P]>>;
    L808:  } & T;

Это мой package.json:

...
  "dependencies": {
    "@stencil/core": "~0.15.2",
    "@stencil/router": "~0.3.1",
    "imask": "^4.1.5",
    "jwt-decode": "^2.2.0",
    "material-design-icons": "^3.0.1"
  },
  "license": "MIT",
  "devDependencies": {
    "@types/jest": "^23.3.14",
    "@types/puppeteer": "1.12.1",
    "jest": "23.6.0",
    "jest-cli": "23.6.0",
    "puppeteer": "1.8.0",
    "workbox-build": "3.4.1"
  }
...

Вот мой tsconfig.json:

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "allowUnreachableCode": false,
    "declaration": false,
    "experimentalDecorators": true,
    "lib": [
      "dom",
      "es2015"
    ],
    "moduleResolution": "node",
    "module": "esnext",
    "target": "es2017",
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "jsx": "react",
    "jsxFactory": "h"
  },
  "include": [
    "src"
  ],
  "exclude": [
    "node_modules"
  ]
}

Я попытался воспроизвести ошибку с помощью нового начального трафаретного приложения, но это не приложение.Также попытался удалить мой package-lock.json и переустановить пакеты, чтобы избавиться от возможных конфликтов.

Ответы [ 3 ]

0 голосов
/ 28 марта 2019

Обновление машинописной версии до 3.3.4000 помогло мне.

0 голосов
/ 09 июля 2019

Надеюсь, это еще не слишком поздно и может быть полезно

Вместо того, чтобы пропускать все проверки библиотек, вы можете переопределить нужные библиотеки.В нашем случае это будет: @types/jest

В качестве альтернативы для установки
"skipLibCheck": true на tsconfig.json

вы можете создать новую папку и файл из своего корня: overrides/jest/index.d.ts и добавьте

"compilerOptions": {
    "typeRoots": [
      "overrides",
      "./node_modules/@types"
    ]
}

Это, по существу, переопределит все проверки типов в папке overrides и возврат к ./node_modules/@types, кроме шуток благодаря файлу overrides/jest/index.d.ts, который может быть пустым.

Я нашел этот ответ на https://medium.com/@elenasufieva/handling-type-declarations-clash-in-typescript-b05b10723f47

0 голосов
/ 12 февраля 2019

Попробуйте добавить "skipLibCheck": true к tsconfig.json, чтобы пропустить проверку типа всех файлов объявлений (.d.ts).

РЕДАКТИРОВАТЬ: Это скорее обходной путь "кувалдой", чем реальное исправление.Как указано в другом ответе, эта проблема, вероятно, возникает из-за того, что наборы шрифтов Jest были сделаны для более новой версии TypeScript, чем та, которая используется в проекте.Таким образом, правильным исправлением будет обновление проекта до новой версии TS.

...