тип переопределяет тип внутри класса

#typescript #typescript-generics

#typescript #typescript-дженерики

Вопрос:

у меня есть общий интерфейс, подобный этому

 type myType =  
{
 value1:string;
 value2:string;
  
}
 

и класс

  class array<myType> extends Array<myType>
{
   let a:myType;

   a.value1 ==> error.

}
 

проблема в том, что внутри класса тип MyType неправильно читается, поскольку это другое дело, как я могу это решить?

Комментарии:

1. В чем ошибка?

2. когда я печатаю a.value1 , автозаполнение не работает и говорит, что этого свойства нет, в то время как, если я объявляю ту же переменную вне класса, она работает.

3. Вам необходимо инициализировать свойство.

Ответ №1:

Чтобы элементы этого массива MyType считались равными , объявите класс с уникальным именем, которое расширяется Array<MyType> . На отдельные элементы массива можно ссылаться с помощью this[index] .

Вот пример (и ссылка на игровую площадку):

 type MyType = {
  value1: string;
  value2: string;
};

class MyTypeArray extends Array<MyType> {
  getCombinedValues(index: number) {
    // type of elementAtIndex is inferred as MyType
    const elementAtIndex = this[index];
    return `${elementAtIndex.value1} ${elementAtIndex.value2}`
  }
}

const myTypeArray = new MyTypeArray({ value1: 'Hello', value2: 'world' });

// Prints 'Hello world'
console.log(myTypeArray.getCombinedValues(0));