sinsky
@sinsky

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

typescriptでresolveを返す際の引数が多すぎるエラーについて

解決したいこと

Promiseで返すresolverejectでスプレッド構文を使って返したい

発生している問題・エラー

$ yarn webpack
ERROR in ./src/client.script.ts
[tsl] ERROR in ./src/client.script.ts(4,45)
      TS2554: Expected 0-1 arguments, but got 2.
ERROR in ./src/client.script.ts
[tsl] ERROR in src/client.script.ts(5,44)
      TS2554: Expected 0-1 arguments, but got 2.
client.script.ts
const googleRuns: any = async (func: string, ...args: any): Promise<any> =>
  new Promise((resolve, reject) =>
    google.script.run
      .withSuccessHandler((...e) => resolve(...e))// resolve(...e)の...eでエラーが出ている
      .withFailureHandler((...e) => reject(...e))[func](...args)// reject(...e)の...eでエラーが出ている
  );

const foo = async (): Promise<any> =>
  await googleRuns("hello", { res: 200 })
    .then((res) => console.log(res))
    .catch((err) => console.log(err));

window.addEventListener("DOMContentLoaded", foo);

細かいエラー内容について

VSCodeにてresolve,rejectの引数のスプレッド構文のところで下記エラーが表示されました。
(parameter) e: [value: any, object?: any]
1 個の引数が必要ですが、2 個指定されました。ts(2554)

google.scriptの型については下記からコピーして使っています。
https://gist.github.com/DominikPalo/bea3d958877566fe24ebe5ee1688d976

スプレッド構文で返すのは無理なのでしょうか?
それとも何かやり方があるのでしょうか。

使用しているバージョン

$ yarn webpack --version
yarn run v1.22.17
$ ./node_modules/.bin/webpack --version
webpack: 4.46.0
webpack-cli: 4.9.2
webpack-dev-server not installed
✨  Done in 0.57s.
0

2Answer

Comments

  1. @sinsky

    Questioner

    そうなのですね、ありがとうございます。

.withSuccessHandler((...e) => resolve(e)) とすればいいのでは? (...e) => は可変個数の引数をまとめて配列 e に入れます。その配列を渡すなら resolve(e) で十分です。

0Like

Your answer might help someone💌