У меня есть React
проект в Typescript
, и во многих моих компонентах я использую интерфейс внутри State
:
interface Item {
selectedValue: string
originalSelectedValue: string
loading: boolean
disabled: boolean
isValid?: boolean
}
interface State {
itemInstance: Item
}
В каждом компоненте я использую constructor
длячтобы инициализировать экземпляр интерфейса:
constructor(props: Props) {
super(props);
let itemInstance: Item = {
selectedValue: '',
originalSelectedValue: '',
loading: true,
disabled: false,
isValid?: false
};
this.state = {
itemInstance: itemInstance
}
}
Поскольку мне нужно повторить эту инициализацию для каждого компонента, вместо копирования / вставки кода в каждый компонент, я попытался найти способ централизовать инициализацию.Поскольку интерфейс не может иметь реализацию, я подумал реализовать некий шаблон метода фабрики без указания класса:
export const getItemInstance = (): Item => {
return ({
selectedValue: '',
originalSelectedValue: '',
loading: true,
disabled: false,
isValid?: false
});
}
Хотя я не очень заинтересован в этом решении, поскольку для каждогоИнтерфейс Мне нужно создать еще один файл / компонент, который реализует инициализацию.Кто-нибудь знает шаблон для реализации этого поведения в Typescript
?