前提・実現したいこと
TypeScript初心者です。duckduckGoの検索結果を取得する機能を制作中です。サーバーから受け取った検索結果データのJSON含むオブジェクトに適切なtypeを指定したいです。
現状では型エラーが生じています。
発生している問題・エラーメッセージ
interfaceでサーバーから受け取ったデータ構造に合わせて型宣言しています。
その型をそれぞれの変数に当てはめていますがうまくいきません。
エラーメッセージ: Argument of type 'duckGoResults[]' is not assignable to parameter of type 'string' エラー箇所のソースコード: const duckGoDom: duckGoResults[] = JSON.parse(duckGo);
該当のソースコード
**受け取るデータ(response: duckGoData)の中身。 「 JSON.parse typescript 」 の検索結果** { type: "backgroundMsg", results: "[ {"title":"javascript - How to parse JSON string in Typescript - Stack ...","url":"https://stackoverflow.com/questions/38688822/how-to-parse-json-string-in-typescript","snippet":"Typescript is (a superset of) javascript, so you just use J..."}, {"title":"TypeScriptのリフレクションでJSONの型変換を自動化する - Qiita","url":"https://qiita.com/bitrinjani/items/d60bdac10e5ced126d1a","snippet":"3. JSON.parseの結果をコンストラクタでくくる これだけで、TypeScriptで指定した型に自動的に変換さ..."}, {"title":"JSON.parse() - JavaScript | MDN","url":"https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse","snippet":"JSON.parse() メソッドは文字列を JSON として解析し、文字列によって記述されている JavaScrip..."}, . . . (以下27行) ]", waitFlag: true, }
typescript
1interface duckGoData { 2 type: string; 3 results: { 4 title: string; 5 url: string; 6 snippet: string; 7 }[]; 8 waitFlag: boolean; 9} 10 11//JSON.parse後の変数の型 12interface duckGoResults { 13 title: string; 14 url: string; 15 snippet: string; 16}[]; 17 18const addDom = ( response: duckGoData ) => { 19 // 最初にwaitFlag処理 20 const duckGo: duckGoResults[] = response.results; 21 const duckGoDom: duckGoResults[] = JSON.parse(duckGo); //error該当箇所。 22 23 const responseItem = (result: duckGoResults) => { 24 return ` 25 <div id="dupliChecker" class="ducks"> 26 <div class="ducks__padding"> 27 <div class="ducks__title"><a href="${result.url}">${result.title}</a></div> 28 <div class="ducks__url"><a href="${result.url}">${decodeURI(result.url)}</a></div> 29 <div class="ducks__snippet"><p>${result.snippet}</p></div> 30 </div> 31 </div> 32 ` 33 } 34 // 以下Dom処理コード 35}
試したこと
少しずつinterfaceを変えて試して見たりしましたがうまくいきませんでした。検索しても同様の質問は見つけられず。
補足情報(FW/ツールのバージョンなど)
該当箇所のエラーメッセージをVSCodeから切り取りました。
tsconfig.jsonに "strict": true を設定しています。
回答1件
あなたの回答
tips
プレビュー