`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.ts
since at least for me, it didn't take it automatically.
I meet the same problem.