Реагировать на ошибки импорта по умолчанию в проекте Next JS с помощью TypeScript, esModuleInterop = true - PullRequest
0 голосов
/ 11 июля 2020

Моя конфигурация TypeScript в моем приложении Next. js не устраивает этот тривиальный импорт:

import React from 'react'

Конечно, Next. js импортирует React по умолчанию в глобальный, но это приводит к другому предупреждение. Добавление импорта кажется более ясным, поэтому предположим, что я упрямый в этом вопросе.

Ошибка:

TS1259: Module '"~/my-project/node_modules/@types/react/index"' can only be default-imported using the 'esModuleInterop' flag  index.d.ts(65, 1): This module is declared with using 'export =', and can only be used with a default import when using the 'esModuleInterop' flag.

Но у меня уже есть esModuleInterop: true:

tsconfig. json

  "compilerOptions": {
    "target": "es5",
    "lib": [
      "dom",
      "dom.iterable",
      "esnext"
    ],
    "allowJs": true,
    "skipLibCheck": true,
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "noEmit": true,
    "esModuleInterop": true,  //  <==================== Right here
    "module": "esnext",
    "moduleResolution": "node",
    "resolveJsonModule": true,
    "isolatedModules": true,
    "jsx": "preserve"
  },
  "exclude": [
    "node_modules"
  ],
  "include": [
    "next-env.d.ts",
    "typings/**/*.d.ts",
    "**/*.ts",
    "**/*.tsx"
  ]
}

Я ожидал, что ошибка будет учитывать мою конфигурацию. Итак, почему я получаю эту ошибку?

Edit:

import * as React from 'react'

не вызывает ошибки, поэтому я могу двигаться дальше. Этот ответ содержит подробности. При этом остается вопрос, почему импорт по умолчанию не работает (что, по-видимому, является предпочтительным в сообществе).

...