В моем приложении TypeScript я запрашиваю базу данных, чтобы получить некоторые данные.
Я построил свою собственную систему типов для отражения данных, поступающих из базы данных.
У меня есть функция getData()
, и я уверен, что она всегда возвращает какой-то тип данных, который расширяет мой ParentDataType
.
Затем существуют классы, которые должны получать данные различных типов, все они расширяются ParentDataType
. В таких классах я хочу хранить данные внутри переменной типа T extends ParentDataType
.
Но я получаю:
Ошибка TS2322: тип «ParentDataType []» не может быть назначен типу «T []».
Это мой код:
interface ParentDataType {
[key: string]: string | number;
}
interface DataType1 extends ParentDataType {
someKey: string;
}
interface DataType2 extends ParentDataType {
someOtherKey: string;
}
class DataProvider {
static getData(): ParentDataType[] {
let data: ParentDataType[];
// somehow gets the data from the DataBase ... and put it inside data
// this data will always be an array of a type that extends ParentDataType
return data;
}
}
abstract class ParentClass<T extends ParentDataType> {
rows: T[];
onSomeEventTriggered() {
this.rows = DataProvider.getData(); // Error TS2322: Type 'ParentDataType[]' is not assignable to type 'T[]'.
}
}
class MyClass1 extends ParentClass<DataType1> {
// ...
}
class MyClass2 extends ParentClass<DataType2> {
// ...
}