TypeScript - [Последующие объявления свойств должны иметь одинаковое время] - Несколько ссылок на одни и те же определения типов - PullRequest
0 голосов
/ 31 августа 2018

Я довольно новичок в использовании TypeScript и Webpack и, к сожалению, продолжаю сталкиваться с проблемой с моими объявлениями типов, которую я просто не могу решить.

Проще говоря, мой проект - это приложение ASP.NET MVC React, которое использует NPM, TypeScript и Webpack для управления зависимостями JavaScript. Проблема, с которой я сталкиваюсь, заключается в том, что, хотя мой проект может успешно скомпилироваться, у меня более 180 errors, которые выглядят следующим образом.

TS2717    (TS) Subsequent property declarations must have the same type. 
Property 'webview' must be of type
'DetailedHTMLProps<WebViewHTMLAttributes<HTMLWebViewElement>,
HTMLWebViewElement>', but here has type
'DetailedHTMLProps<WebViewHTMLAttributes<HTMLWebViewElement>,
HTMLWebViewElement>'.

Вот изображение ошибки консоли: enter image description here

Теперь, если я посмотрю поближе, щелкнув по типу и нажав «Перейти к определению», я могу видеть, что в моем проекте четко определены две ссылки для того же типа, что и здесь:

enter image description here

Проблема в том, что оба этих файла являются требованиями к файлу tsconfig.json моего проекта, поскольку без них он не компилируется.

Мой tsconfig.json выглядит так:

{
  "compilerOptions": {    
    "module": "commonjs",    
    "moduleResolution": "node",
    "target": "es5",
    "sourceMap": true,
    "lib": [ "es5", "es2017", "dom"]
    "removeComments": true,
    "typeRoots": [
      "/node_modules/@types",
      "/Types/"
    ]

  },
  "compileOnSave": false,
  "exclude": [
    "/node_modules/",
    "/bin",
    "/obj"
  ]
}

и мой файл package.json выглядит так:

{
  "name": "fungalai",
  "version": "1.0.0",
  "dependencies": {
    "react": "16.4.2",
    "react-dom": "16.4.2"
  },
  "devDependencies": {
    "@types/flux": "3.1.7",
    "axios": "^0.18.0",
    "deep-diff": "^1.0.1",
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-polyfill": "^6.26.0",
    "babel-preset-es2015": "6.24.1",
    "babel-preset-react": "6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "create-react-class": "^15.6.3",
    "expose-loader": "^0.7.5",
    "jszip": "^3.1.5",
    "flux": "3.1.3",
    "ts-loader": "^4.3.0",
    "typescript": "3.0.1",
    "uglifyjs-webpack-plugin": "^1.2.5",
    "webpack": "^4.8.3",
    "webpack-cli": "^2.1.4"
  }
}

Теперь я подозреваю, что эта проблема связана со строкой в ​​моем файле tsconfig.json "lib": [ "es5", "es2017", "dom"], но если я удалю любую из этих ссылок, мой проект не будет компилироваться, потому что некоторые из моих типов явно определены в этих ссылках библиотеки. .

Может кто-нибудь помочь мне направить меня в правильном направлении, как решить эту проблему и правильно сослаться на DOM вместе с React в ASP.NET TypeScript?

EDIT: Я также попытался изменить свой файл tsconfig.json, чтобы удалить ссылки 'lib' (при условии, что я могу использовать Polyfill) на "lib": []. Тем не менее проблема все еще сохраняется.

1 Ответ

0 голосов
/ 02 сентября 2018

Из-за обратной связи, я полагаю, я нашел решение своей проблемы.

  1. Запустите 'npm uninstall реагировать -g', чтобы удалить пакет реагирования из вашего глобального кэша.
  2. Создайте руководство вручную в файле package.json для пакета @types/react.

    "devDependencies": { "@ types / реагирует": "16.4.13" }

Мой окончательный файл package.json выглядел так:

{
  "name": "fungalai",
  "version": "1.0.0",
  "dependencies": {
    "react": "16.4.2",
    "react-dom": "16.4.2"
  },
  "devDependencies": {
    "@types/flux": "3.1.7",
    "@types/react": "16.4.13",
    "axios": "^0.18.0",
    "deep-diff": "^1.0.1",
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-polyfill": "^6.26.0",
    "babel-preset-es2015": "6.24.1",
    "babel-preset-react": "6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "create-react-class": "^15.6.3",
    "expose-loader": "^0.7.5",
    "jszip": "^3.1.5",
    "flux": "3.1.3",
    "ts-loader": "^4.3.0",
    "typescript": "3.0.1",
    "uglifyjs-webpack-plugin": "^1.2.5",
    "webpack": "^4.8.3",
    "webpack-cli": "^2.1.4"
  }
}

и tsconfig.json вот так:

{
  "compilerOptions": {
    "module": "commonjs",
    "moduleResolution": "node",
    "target": "es5",
    "sourceMap": true,
    "jsx": "react",
    "lib": [ "es6", "dom" ], 
    "removeComments": true,
    "typeRoots": [
      "/node_modules/@types",
      "/Types/"
    ]
  },
  "compileOnSave": false,
  "exclude": [
    "/node_modules/",
    "/bin",
    "/obj"
  ]
}

Кажется, это решило ошибки.

...