Skip to content

TypeScript types mismatch #11

@Newbie012

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

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