LWC Typescript definitions inaccurate

Issue #1711 resolved
Xander Victory created an issue

In a recent update, it seems you added the missing NodeSelector interface, but the methods are marked as having no parameters (which they certainly do), leading to “Invalid number of arguments, expected 0”

In my custom LWC typings version I have the definition: (copied from IDEA’s es7 module if my comment is to be believed)

interface NodeSelector {
    querySelector<E extends Element = Element>(selectors: string): E | null;
    querySelectorAll<E extends Element = Element>(selectors: string): NodeListOf<E>;
}

The navigation module is also quite wrong.

It should be more like:

const Navigate: unique symbol = Symbol('Navigate');
const GenerateUrl: unique symbol = Symbol('GenerateUrl');

declare module "lightning/navigation" {
    /** use with @wire, but directly assigns the pageref, not {data,error} */
    function CurrentPageReference(config?: any): any;

    const NavigationMixin: {
        <T>(Base: T): T & NavClz
        readonly Navigate: typeof Navigate
        readonly GenerateUrl: typeof GenerateUrl
    };

    class NavClz {
        [NavigationMixin.Navigate](pageReference: PageReference, replace?: boolean): void;
        [NavigationMixin.GenerateUrl](pageReference: PageReference): Promise<string>;
    }

    interface PageReference {
        type: PageRefType;
        attributes?: object;
        state: {
            [key: string]: string;
        };
    }

    type PageRefType = 'standard__app' |
                       'standard__component' |
                       'comm__loginPage' |
                       'standard__knowledgeArticlePage' |
                       'comm__namedPage' |
                       'standard__namedPage' |
                       'standard__navItemPage' |
                       'standard__objectPage' |
                       'standard__recordPage' |
                       'standard__recordRelationshipPage' |
                       'standard__webPage'
}

I’m working on better page reference autocompletion, but this definition has served me well so far.

Comments (3)

  1. Scott Wells repo owner

    Hi, Xander. Good to know. The NodeSelector one is from my own implementation. The other stuff is straight from the TS modules provided by Salesforce. I'll look into improving them. Thanks for the details!

  2. Scott Wells repo owner

    Issue tracker grooming. If this is still an issue, please feel free to reopen, ideally with a concrete reproduction scenario.

  3. Log in to comment