Как обьеденить два типа при merge в typesript?

Рейтинг: 0Ответов: 0Опубликовано: 07.02.2023

typesript не срабатывает обьеденение двух объектов в которых есть одинаковые свойства

если режим разработки я хочу объединить два конфига.

 if (mode === 'development') {
    return merge(productionConfig, Configuration);
  }

Интерефейсы имею такие

export type IConfiguration = {
  devServer: {
    port: number;
    historyApiFallback: boolean;
  };
};

export interface IproductionConfig {
  entry: {
    main: string[];
  };
  devServer?: {
    port: number;
    historyApiFallback: boolean;
  };
}

при слияние в функции merge получаю ошибку

"Аргумент типа "IConfiguration" нельзя назначить параметру типа "IproductionConfig". Свойство "entry" отсутствует в типе "IConfiguration" и является обязательным в типе "IproductionConfig" "

Хотя я указала все нужные свойства как можно это исправить?

файл вебпак конфиг

import { IproductionConfig } from './types';
import { merge } from 'webpack-merge';
import { Configuration } from './dev.config';

const MAIN = 'main';

const Config = (mode: string): IproductionConfig => {
  const isProduction = mode === 'production';
  const isDevelopment = mode === 'development';

  return {
    entry: {
      [MAIN]: ['./src/index.js'],
    },
  };
};

module.exports = (env, { mode }): IproductionConfig => {
  const product = Config(mode);

  if (mode === 'development') {
    return merge(product, Configuration);
  }

  return product;
};

файл devconfig

import { IConfiguration } from './types';

export const Configuration: IConfiguration = {
  devServer: {
    port: 3000,
    historyApiFallback: true,
  },

};

введите сюда описание изображения

введите сюда описание изображения

введите сюда описание изображения

Ответы

Ответов пока нет.