Skip to content

NoInfer interfere with Exclude in Exclude<NoInfer<I>, undefined>`Β #60594

Closed as not planned
@JeanMeche

Description

@JeanMeche

πŸ”Ž Search Terms

  • NoInfer
  • inteference
  • Exclude

πŸ•— Version & Regression Information

This is not a regression, and doesn't work with 5.7 :

⏯ Playground Link

https://www.typescriptlang.org/play/?#code/C4TwDgpgBAogHgYwDYFcAmECqA7DAzAS2wjQB4AlAPigF5ZFUNSA5AewEls8IAnCygDRQUuCIWJpKAbgBQMpBGBRsARgBc9ZOiyjxJUthQBbAEa8oAH2G6iJanRH5baKVDduA9B6isA1vMVlACYNeC0MHCcJFmMzHktrKLtaRLFnV3coL2VWJQgGbTQApQBndU1GHSSyEuAeIgBzBMc0iXtUvRdMrO8-YqgSkIrtSNb9AGU6xuabNpSWzoz3bOxcqHzwkn60crDK0c7SABEAQ2BoKwXndquJJcyVtY3KooUlE54eXYKI2f1DUy8ADaAF0ZtUbn8uo88j8tm8fCYAFbfTYHZykADeAF9wWNJPMofdlr1-AjDEgkKj9lCDChKXjOpDqvdsn0gA

πŸ’» Code

type ExcludeUndefined<R> = Exclude<NoInfer<R>, undefined>;

let n1: ExcludeUndefined<number | undefined> = undefined;     // ok
let n2: ExcludeUndefined<Number | undefined> = undefined;     // not excluded
let s1: ExcludeUndefined<string | undefined> = undefined;     // ok
let s2: ExcludeUndefined<String | undefined> = undefined;     // not excluded
let d1: ExcludeUndefined<Date | undefined> = undefined;       // not excluded
let arr1: ExcludeUndefined<number[] | undefined> = undefined; // not excluded
let obj1: ExcludeUndefined<{} | undefined> = undefined;       // ok
let null1: ExcludeUndefined<null | undefined> = undefined;    // ok

πŸ™ Actual behavior

undefined is not consistantly excluded.

πŸ™‚ Expected behavior

undefined should be consistantly excluded.

Additional information about the issue

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Not a DefectThis behavior is one of several equally-correct options

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions