Исправьте ошибки TypeScript после ручной проверки Array.isArray - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть некоторый класс со следующим определением:

export class WorkspaceFilter {
  [key: string]: boolean | string | [string]
}

Затем я пытаюсь использовать его в следующей функции:

const fn = (filter: WorkspaceFilter, key: string) => {
  if (Array.isArray(filter[key]) {
    console.log(filter[key].length)
  }
}

Ошибка: Property 'length' does not exist on type 'false'. Очевидно, это потому что логический является одним из принятых типов. Но я проверяю тип вручную! Как заткнуть Typescript после этой точной проверки js?

1 Ответ

1 голос
/ 09 апреля 2020

если вы проверите, чтобы он был массивом, вы можете сказать машинописи, что он имеет дело с массивом:

export class WorkspaceFilter {
  [key: string]: boolean | string | [string]
}

const fn = (filter: WorkspaceFilter, key: string) => {
  if (Array.isArray(filter[key])) {
    console.log((filter[key] as string[]).length)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...