実現したいこと
TypeScriptでfetchの結果を文字列で返す関数を作りたいのですが、fetchの結果を待たずにreturnされてしまって困っています。
ブラウザに表示したい文字列
huga
実際にブラウザに表示される文字列
hoge
該当のソースコード
index.ts
(HTMLで呼び出す際に、JavaScriptにコンパイルしています)
TypeScript
1const fetchFunc = (url: string): string => { 2 let returnStr: string = 'hoge'; 3 4 fetch(url) 5 .then(req => req.text()) 6 .then( 7 (result: string) => { 8 returnStr = result; 9 }, 10 (error: Error) => { 11 console.log(error); 12 } 13 ); 14 15 return returnStr; 16} 17 18const memo: HTMLElement = document.getElementById('memo'); 19memo.innerHTML = fetchFunc('./data.txt');
data.txt
Text
1huga
index.html
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 </head> 7 8 <body> 9 <p id="memo"></p> 10 <script src="./index.js"></script> 11 </body> 12</html>
試したこと
一番下のreturnを消し、resolve
のresult
をreturnしようとしましたが、宣言された型が 'void' でも 'any' でもない関数は値を返す必要があります。
とエラーが発生した。
バージョン
- TypeScript 4.1.5
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/20 16:17