困っていること
TypeScriptでPromise.allにPromiseインスタンスの配列を渡すと、IDE(WebStorm)がエラー(赤波線)表示するので、エラーにならないようにしたいです。
実際に動かしてみると、エラーが出力される訳でもなく動いてしまうので、WebStrormのLintか何かなのかなと思ってるんですが、何が理由で下記のエラーが表示されているのかも分からないので、分かる方に教えていただきたいと思っています。
(色々とググってはみたのですが、ピンと来るものが無く、エラーの内容についても分からなかったのです
ご助力お願いいたします。
該当のソースコード
TypeScript
1const promise1 = new Promise((resolve: Function) => { 2 resolve(); 3}); 4const promise2 = new Promise((resolve: Function) => { 5 resolve(); 6}); 7Promise.all([promise1, promise2]) // この行で赤い波線が出る 8 .then(() => { 9 // any process 10 });
エラーメッセージ
WebStorm
1Argument type [Promise<any>, Promise<any>] is not assignable to parameter type [ 2 (PromiseLike<any> | any), (PromiseLike<any> | any), (PromiseLike<any> | any), 3 (PromiseLike<any> | any), (PromiseLike<any> | any), (PromiseLike<any> | any), 4 (PromiseLike<any> | any), (PromiseLike<any> | any), (PromiseLike<any> | any), 5 (PromiseLike<any> | any) 6]
試したこと
一旦配列に詰めてみました。
TypeScript
1const promise1 = new Promise((resolve: Function) => { 2 resolve(); 3}); 4const promise2 = new Promise((resolve: Function) => { 5 resolve(); 6}); 7const promiseList: Promise<void>[] = [promise1, promise2]; // この行で赤い波線が出る 8Promise.all(promiseList) // ここの赤波線は取れた 9 .then(() => { 10 // any process 11 })
エラーメッセージ
WebStorm
1Initializer type Promise<any>[] is not assignable to variable type Promise[]
補足情報(FW/ツールのバージョンなど)
package.json
json
1... 2"typescript": "^3.0.0", 3...
プロジェクト直下/tsconfig.json
Json
1{ 2 "compilerOptions": { 3 "target": "esnext", 4 "module": "esnext", 5 "strict": true, 6 "jsx": "preserve", 7 "importHelpers": true, 8 "moduleResolution": "node", 9 "experimentalDecorators": true, 10 "esModuleInterop": true, 11 "allowSyntheticDefaultImports": true, 12 "sourceMap": true, 13 "baseUrl": ".", 14 "types": [ 15 "webpack-env" 16 ], 17 "typeRoots" : ["src/@types"], 18 "paths": { 19 "@/*": [ 20 "src/*" 21 ] 22 }, 23 "lib": [ 24 "esnext", 25 "dom", 26 "dom.iterable", 27 "scripthost" 28 ] 29 }, 30 "include": [ 31 "src/**/*.ts", 32 "src/**/*.tsx", 33 "src/**/*.vue", 34 "tests/**/*.ts", 35 "tests/**/*.tsx" 36 ], 37 "exclude": [ 38 "node_modules" 39 ] 40}
tslint.json(下記パスにのみ存在しました)
node_modules/@Vue/cli-plugin-typescript/lib/tslint.json
※ 本プロジェクトはVue CLI 3で作成しています。
JSON
1<%_ if (options.tsLint) { _%> 2{ 3 "defaultSeverity": "warning", 4 "extends": [ 5 "tslint:recommended" 6 ], 7 "linterOptions": { 8 "exclude": [ 9 "node_modules/**" 10 ] 11 }, 12 "rules": { 13 "quotemark": [true, "single"], 14 "indent": [true, "spaces", 2], 15 "interface-name": false, 16 "ordered-imports": false, 17 "object-literal-sort-keys": false, 18 "no-consecutive-blank-lines": false 19 } 20} 21<%_ } _%> 22