LWC Typescript definitions inaccurate
Issue #1711
resolved
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)
-
repo owner -
repo owner The
NodeSelector
correction has been delivered in 2.1.4.0. -
repo owner - changed status to resolved
Issue tracker grooming. If this is still an issue, please feel free to reopen, ideally with a concrete reproduction scenario.
- Log in to comment
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!