Open
Description
array filter 泛型返回具体元素类型
is
指定推导结果类型:
filter<S>
S 可以忽略不填,但是返回值 value is S
必须手写
type Alice = {
name: string;
department: string;
}
type Bob = {
name: string;
department: boolean;
}
type Carl = {
name: string;
department: number;
}
type AllName = Alice | Bob | Carl;
const employees: AllName[] = [
{ name: 'Alice', department: 'accounting' },
{ name: 'Bob', department: true },
{ name: 'Carl', department: 10 },
];
const isAlice = (obj: AllName): obj is Alice => obj.name === 'Alice';
const result = employees.filter(isAlice);
// result => Alice[];