@become_iron

Как решить несовпадение сигнатур при использовании сторонних библиотек?

Создаю какой-нибудь интерфейс:
export interface Syllable {
  readonly id: number;
  readonly hiragana?: string;
  readonly katakana: string;
  readonly transcription: string;
}

Пишу затем абстрактный класс и объявляю в нём метод, который возвращает Syllable[]. Наследуюсь от данного класса, в теле определения метода использую функцию из другой библиотеки:
// underscore.js
return _.shuffle(this.proposed_options);

В результате получается, что сигнатуры не совпадают: возвращаю не Syllable[], а {}[].
Поэтому привожу вручную к нужной сигнатуре:
// underscore.js
<Syllable[]>_.shuffle(this.proposed_options)

Вопрос в том, как правильно разобраться с этой ситуацией.
  • Вопрос задан
  • 215 просмотров
Решения вопроса 2
@SuperOleg39ru
Front-end разработчик
Декларация метода shuffle:
shuffle<T>(list: _.Collection<T>): T[];

Возможно, свойство класса this.proposed_options не типизировано как Syllable.

Перепишите вручную, но используя generic:
_.shuffle<Syllable>(this.proposed_options)
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Странно, что Typescript у вас не ругается на то, что вы не указываете тип дженерику. По идее должно быть (судя по сигнатуре в репо):
_.shuffle<Syllable>(this.proposed_options)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы