ts-reset icon indicating copy to clipboard operation
ts-reset copied to clipboard

Filter throws error when using `as const`

Open IanVS opened this issue 1 year ago • 0 comments

I found a problem when using an object with readonly keys and accessing one of them dynamically. It's tough to explain, so here's a minimal example:

const test = {
  A: [{ key: 1 }, { key: 2 }],
  B: [{ key: 3 }, { key: 4 }],
} as const;

function check(x: 'A' | 'B') {
  test[x].filter(y => y.key > 1)
}

Results in an error:

Argument of type '<T>(y: T | undefined) => boolean' is not assignable to parameter of type 'BooleanConstructor'.
  Type '<T>(y: T | undefined) => boolean' provides no match for the signature 'new (value?: any): Boolean'.

If I remove ts-reset, remove as const, or access test.A directly, there is no error.

IanVS avatar Apr 03 '24 14:04 IanVS