GoogleChrome / chrome-types

Code to parse Chrome's internal extension type definitions—published on NPM as chrome-types

Home Page:https://www.npmjs.com/package/chrome-types

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`chrome.scripting.executeScript`: `func` with `args` throws error

D3strukt0r opened this issue · comments

I tried to execute

await chrome.scripting.executeScript({
  target: {tabId: tab.id},
  func: (text) => {
    (document.activeElement! as HTMLInputElement).value += (text || '');
  },
  args: [text],
});

and TypeScript tells me

TS2769: No overload matches this call.
   Overload 1 of 2, '(injection: ScriptInjection): Promise<InjectionResult[]>', gave the following error.
     Type '(text: any) => void' is not assignable to type '() => void'.
       Target signature provides too few arguments. Expected 1 or more, but got 0.
   Overload 2 of 2, '(injection: ScriptInjection, callback?: ((results: InjectionResult[]) => void) | undefined): void', gave the following error.
     Type '(text: any) => void' is not assignable to type '() => void'.

as well as

TS7006: Parameter 'text' implicitly has an 'any' type.

the type definition looks a bit too simple compared to @types/chrome

    export interface ScriptInjection {
      func?: () => void;
      args?: any[];
      ...
    }
    export type ScriptInjection<Args extends any[], Result> = {
        target: InjectionTarget;
        world?: ExecutionWorld;
        injectImmediately?: boolean;
    } & ({
        files: string[];
    } | ({
        func: () => Result;
    } | {
        func: (...args: Args) => Result;
        args: Args;
    }))

Following might also be a separate issue, but maybe add to the docs that one has to add /// <reference types="chrome-types" /> to a .d.tssince at least for me, it didn't take it automatically.

I meet the same problem.