использование includes() в TypeScript возвращает больше строк, чем ожидалось

#typescript

Вопрос:

У меня есть этот код здесь:

 getMembershipNameString(membership: string[]): any {
    const filtered = this.allMemberships.filter((m) => {
      return membership.includes(m.name);
    });
    return filtered;
  }
 

который должен сравнивать строки из одного массива с массивом объектов. Допустим, у меня все так:

['Dog', 'Cat', 'Doggy']

и результат возврата-и Собака, и Собачка, тогда как я хотел бы только вернуть собаку.

Я также пробовал использовать:

 getMembershipNameString(membership: string[]): any {
    const filtered = this.allMemberships.filter((m) => m.name === membership);
    console.log(filtered);
    return filtered;
  }
 

что приводит меня к ошибке: это условие всегда будет возвращать «false», так как типы «строка []» и «строка» не имеют перекрытия.ts(2367)

Заранее спасибо!

P.S. мой allMemberships объект выглядит так: { name: 'name', label: 'label' } ;

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

1. Как выглядит ваш объект allMemberships? Ваш второй бит кода не имеет смысла, поскольку он сравнивает строку с массивом строк, поэтому вы получаете ошибку ts.

2. отредактировал мой пост @Alex

3. См.: jsfiddle.net/fezpnchg/1 , который сравнивает массив имен с массивом объектов со свойством name. Он фильтруется, как и ожидалось.