Типизация array.filter в typescript
Пример:
const list = ['a', 'b', 'c', 4];
const filteredList: string[] = list.filter((i) => typeof i === 'string');
Проблема:
Типизация для filtered не верная и typescript ругается на нее. Якобы отфильтрованный список не соответствует типу массива строк. Знаю что есть возможность приведения типов, но ведь прописывать типы как as string[] плохая практика.
Подскажите, пожалуйста, как типизировать правильно, что бы не было ошибок ts?
Ответы (1 шт):
Автор решения: Qwertiy
→ Ссылка
Надо так: playground
const list = ['a', 'b', 'c', 4];
const filteredList = list.filter((x): x is string => typeof x === 'string');
Тип получается верный - массив строк.