Назначение массива json интерфейсу, когда строка [] не работает - PullRequest
0 голосов
/ 29 мая 2020

У меня есть следующий файл json, содержащий список терминов черного списка.

{
  "blacklist": [
    "term1",
    "term2",
    "term3",
    "term4",
    "term5"
   ]
}

Он используется в службе черного списка:

@Injectable()
export class BlacklistService {
  private readonly BLACKLIST_TERMS_FOLDER = './assets/data/web-blacklist-terms';
  private readonly blacklistTerms1: any;
  private readonly blacklistTerms2: any;
}

constructor(
  public httpClient: HttpClient
) {
  this.blacklistTerms1 = this.httpClient.get(`${this.BLACKLIST_TERMS_FOLDER}/terms.json`);
}


public getAllBlackListTerms(): Observable<any> {
  return combineLatest([this.blacklistTerms1, this.blacklistTerms2])
}

Как мне добавить тип на blacklistTerms? Я пробовал строку [], но мне выдали сообщение Type 'Observable ' is missing the following properties from type 'string[]': length, pop, push, concat, and 27 more.

Ответы [ 2 ]

3 голосов
/ 29 мая 2020

Как насчет того, чтобы добавить такой интерфейс в начало вашего класса?

interface BlackList{
   blacklist: string[]
}

И использовать его в своем коде как

this.blacklistTerms1: Observable<BlackList>  = this.httpClient.get<BlackList>(`${this.BLACKLIST_TERMS_FOLDER}/terms.json`);

Если вы хотите повторно использовать интерфейс в других компонентов, было бы идеально переместить его в другой файл, где вы также разместите другие интерфейсы, и импортировать его оттуда.

1 голос
/ 29 мая 2020
this.httpClient.get(`${this.BLACKLIST_TERMS_FOLDER}/terms.json`)
    .subscribe(x => this.blacklistTerms1 = x);

Вы пытаетесь назначить Observable строке []. Не работает. Используйте подписку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...