freeCodeCampのHow to build a movie search app using React HooksをTypeScriptを用いて行っているのですが、
下記コードの{movie}
に対する適切なinterface
宣言で悩んでいます。
movie
がオブジェクトとして渡されているので合っている自信がないため教えていただきたいです。
javascript
1import React from "react"; 2 3const DEFAULT_PLACEHOLDER_IMAGE = 4 "https://m.media-amazon.com/images/M/MV5BMTczNTI2ODUwOF5BMl5BanBnXkFtZTcwMTU0NTIzMw@@._V1_SX300.jpg"; 5 6const Movie = ({ movie }) => { 7 const poster = 8 movie.Poster === "N/A" ? DEFAULT_PLACEHOLDER_IMAGE : movie.Poster; 9 return ( 10 <div className="movie"> 11 <h2>{movie.Title}</h2> 12 <div> 13 <img 14 width="200" 15 alt={`The movie titled: ${movie.Title}`} 16 src={poster} 17 /> 18 </div> 19 <p>({movie.Year})</p> 20 </div> 21 ); 22}; 23 24 25export default Movie;
interface
も含めて自分でTypeScriptのエラーが出ないように書き換えたコードも載せておきます。
Typescript
1import React from 'react'; 2 3const DEFAULT_PLACEHOLDER_IMAGE = 'https://m.media-amazon.com/images/M/MV5BMTczNTI2ODUwOF5BMl5BanBnXkFtZTcwMTU0NTIzMw@@._V1_SX300.jpg'; 4 5export interface MovieObj { 6 Poster: string, 7 Title: string, 8 Year: number, 9} 10 11const Movie = (movie: MovieObj) => { 12 const poster = movie.Poster === 'N/A' ? DEFAULT_PLACEHOLDER_IMAGE : movie.Poster; 13 14 return ( 15 <div className="movie"> 16 <h2>{movie.Title}</h2> 17 <div> 18 <img 19 width="200" 20 src={poster} 21 alt={`The movie titled: ${movie.Title}`} 22 /> 23 </div> 24 <p>({movie.Year})</p> 25 </div> 26 ); 27}; 28 29export default Movie;
環境は
react: 16.12.0 TypeScript: 3.7.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/11 04:15 編集
2020/02/11 04:16