Skip to content

TypeScript types mismatch #11

Description

@Newbie012

First, I want to say that your work on libpg-query-wasm is awe-inspiring! I maintain an open source plugin called SafeQL which heavily relies on pg-parser. Currently, it uses libpg-query but due to incompatibility with Windows, I was looking at your implementation.

While trying to migrate the code, I've stumbled across some issues that are related to TypeScript types:

1. Node's properties should be T | undefined instead of T | null | undefined

While I assume it's auto-generated from protobuf, All of the properties of pg_query.INode are both nullable and undefined-able, which is incorrect in runtime. They are never nullable, but only undefined-able:

image
image


2. Node properties are typed as their interfaces rather than their classes

For instance, when trying to access node.aConst, it will be typed as (property) pg_query.INode.aConst?: pg_query.IA_Const while it should be typed as pg_query.A_Const. Due to this incorrect type, TypeScript will throw an error:

image

while in runtime it should be fine:

image

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions