Skip to content

Allow for using typeguards in List.find and List.filter #8

@Mitsunee

Description

@Mitsunee

The find and filter methods should allow for typeguards, just like their array counterparts, while still allowing non-type guard methods that simply return a boolean value

declare const arr: (string|number)[];
const filteredArr = arr.filter(v => typeof v == "number"); // number[]
const noGuard = arr.filter(v => (""+v).length > 0); // (string|number)[]

Expected Behaviour

Type is narrowed

declare const arr: List<string|number>;
const filteredList = list.filter(v => typeof v == "number"); // List<number>
const filteredValue = list.find(v => typeof v == "number"); // number

Actual Behaviour

Type is not narrowed

declare const arr: List<string|number>;
const filteredList = list.filter(v => typeof v == "number"); // List<string|number>
const filteredValue = list.find(v => typeof v == "number"); // string|number

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requesthelp wantedExtra attention is needed

    Projects

    Status

    Ideas

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions