Не буду здесь приводить тонны своего кода, покажу на примере в чём проблема.
Есть какой-то класс (пусть будет Foo
) с методом generateJson
, который возвращает JSON
типа FooGenerateJsonType
:
@Component({})
export default class Foo {
protected generateJson(): FooGenerateJsonType {
return {
data {
test1: "TEST1"
}
}
}
}
interface FooGenerateJsonType {
data: FooGenerateJsonTypeData;
}
interface FooGenerateJsonTypeData {
test1: string;
}
У FooGenerateJsonType
есть data
которая имеет тип FooGenerateJsonTypeData
с набором каких-то своих параметров.
Есть второй класс (пусть будет Bar
), который наследуется от Foo
:
@Component({})
export default class Bar extends Foo {
protected generateJson(): BarGenerateJsonType {
return {
data {
test2: "TEST2",
test3: "TEST3"
}
}
}
}
interface BarGenerateJsonType {
data: BarGenerateJsonTypeData;
}
interface BarGenerateJsonTypeData {
test2: string;
test3?: string;
}
Как видно, класс Bar
переопределяет метод generateJson
, но возвращает совершенно другой тип данных.
Скорее всего здесь уместно использовать generics. Подскажите, пожалуйста, как это грамотно сделать в моём случае? Ошибка примерно такая:
Property 'generateJson
' in type 'Bar
' is not assignable to the same
property in base type 'Foo
'. Type '() => BarGenerateJsonType
' is not
assignable to type '() => FooGenerateJsonType
'.
Можно попробовать что-то вроде такого.
class Base<T> {
generateJson(): T {
return;
}
}
interface FooGenerateJsonType {
data: FooGenerateJsonTypeData;
}
interface FooGenerateJsonTypeData {
test1: string;
}
class Foo extends Base<FooGenerateJsonType> {
generateJson(): FooGenerateJsonType {
return {
data: {
test1: 'TEST1'
}
};
}
}
class Bar extends Base<BarGenerateJsonType> {
generateJson(): BarGenerateJsonType {
return {
data: {
test2: 'TEST2',
test3: 'TEST3'
}
};
}
}
interface BarGenerateJsonType {
data: BarGenerateJsonTypeData;
}
interface BarGenerateJsonTypeData {
test2: string;
test3?: string;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
я начинающий веб-разработчик и на данный момент прохожу тестовое задание для вступления в компаниюСуть проблемы заключается в том, что тест...
Подскажите где найти пример как сделать Save to Drive Button на React, никак не могу найтиСпасибо
Как сделать что бы при каждом нажатию на кнопку переменная увеличивалось