TYpeScript не позволяет переопределить свойство при расширении интерфейсов. Поэтому вы должны сначала исключить свойство из MuiButtonProps
, а затем переопределить его в ButtonProps
.
import React from "react";
import { Button as MuiButton } from "@material-ui/core";
import { ButtonProps as MuiButtonProps } from "@material-ui/core/Button";
interface ButtonProps extends Pick<MuiButtonProps, Exclude<keyof MuiButtonProps, "variant">> {
variant?: "square" | MuiButtonProps["variant"];
}
Исключение свойств с Pick
и Exclude
предназначено для TypeScript 3.5 и ниже до 2.8. Вы можете увидеть другие опции для исключения свойств в зависимости от используемой версии TypeScript.
И если вы хотите расширить текущий тип существующего свойства variant
, вы можете использовать оператор доступа к индексу, чтобы получить тип исходного свойства variant
, чтобы объединить его с дополнительным типом "square"
.