Typescript: типы свойства 'data' несовместимы - PullRequest
0 голосов
/ 19 ноября 2018

все.Я более 4 дней пытаюсь решить проблему, но безрезультатно, поэтому решил попросить о помощи.

У меня есть копия проекта на один год (он не мой, требуется его завершение), которыйсборка без каких-либо ошибок, но когда я получаю исходники из svn и запускаю

npm i

В рамках проекта я получил ошибки: Типы свойств 'data'несовместимыми.Я точно знаю, что причина где-то внутри node_modules, но не могу это исправить.

Я уже пытался сгенерировать package.json из рабочей копии с помощью npm shrinkwrap, использовать npm-collect, вручную установить все необходимые пакеты.Также попробуйте добавить typeRoots в tsconfig.json - ничего.

Первый компонент

const renderContent = (
  widget: IDashboardWidget,
  data: IDashboardWidgetData | INodeInfoData,
) => {
  ...
  const {type: type, displayOptions, thresholds = [], id} = widget;
  {
    console.log(data);
    return <Chart id={id} displayOptions={displayOptions} type={type} data={data} thresholds={thresholds}/>;
  }
  ...
};

export default renderContent;

Интерфейс, который использовал реквизиты для диаграммы из второго компонента

interface IComponetProps {
  id: string;
  type: WidgetType;
  thresholds?: Array<{
    value: number;
    severity: string;
  }>;
  displayOptions: IDashboardWidgetDisplayOptions,
  data: object[];
}

Ошибка

    Type '{ id: string; displayOptions: IDashboardWidgetDisplayOptions; type: WidgetType.line | WidgetType....' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Component<Pick<Pick<IChartProps, "data" | "locatio...'.
  Type '{ id: string; displayOptions: IDashboardWidgetDisplayOptions; type: WidgetType.line | WidgetType....' is not assignable to type 'Readonly<Pick<Pick<IChartProps, "data" | "location" | "history" | "match" | "staticContext" | "id...'.
    Types of property 'data' are incompatible.
      Type 'INodeInfoData | { name: string; lat?: string | undefined; lon?: string | undefined; status?: stri...' is not assignable to type 'object[]'.
        Type 'INodeInfoData' is not assignable to type 'object[]'.
          Property 'push' is missing in type 'INodeInfoData'.

devDependencies:

"devDependencies": {
"@fortawesome/fontawesome": "^1.1.8",
"@types/classnames": "^2.2.3",
"@types/cytoscape": "^3.1.9",
"@types/file-saver": "^1.3.0",
"@types/globalize": "0.0.32",
"@types/highcharts": "^5.0.22",
"@types/jest": "^22.2.3",
"@types/jwt-decode": "^2.2.1",
"@types/lodash": "^4.14.109",
"@types/node": "^9.6.18",
"@types/ramda": "^0.25.29",
"@types/react": "^16.3.14",
"@types/react-click-outside": "^3.0.1",
"@types/react-custom-scrollbars": "^4.0.3",
"@types/react-dates": "^16.0.6",
"@types/react-dom": "^16.0.5",
"@types/react-grid-layout": "^0.16.4",
"@types/react-redux": "^5.0.20",
"@types/react-router-dom": "^4.2.6",
"@types/react-router-redux": "^5.0.14",
"@types/react-sortable-hoc": "^0.6.3",
"@types/react-tabs": "^1.0.4",
"@types/react-toggle": "^4.0.1",
"@types/react-widgets": "^4.1.2",
"@types/recompose": "^0.26.1",
"@types/redux-form": "^7.2.5",
"@types/redux-logger": "^3.0.6",
"@types/socket.io-client": "^1.4.32",
"@types/uuid": "^3.4.3",
"globalize-webpack-plugin": "^2.1.0",
"node-sass": "^4.9.0",
"prettier": "^1.12.1",
"redux-devtools-extension": "^2.13.2",
"redux-logger": "^3.0.6",
"sass-loader": "^7.0.1",
"tslint-config-prettier": "^1.13.0",
"typescript": "2.8.3",
"webpack-bundle-analyzer": "^2.13.1"

},

Реакция:

"react": "^16.3.2"

Я почти уверен, проблема в зависимостях, ноЯ могу ошибаться.Буду благодарен за любые советы и помощь.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Ну, я остановился на версии 16.3.2 и машинописной версии 2.8.3, и я до сих пор не знаю, какой именно пакет требовал изменений в исходном коде, но это помогает:

    return <Chart id={id} displayOptions={displayOptions}  type={widgetType} 
            data={data as IDashboardWidgetData}  thresholds={thresholds}/>;
0 голосов
/ 19 ноября 2018

Похоже, что INodeInfoData не является массивом и не может быть передан как объект []. Хотелось бы получить больше информации.

...