0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Binding element 'src' implicitly has an 'any' type.

Posted at

内容

「React 実践入門」3-2(p96)のコードを記述していました。
本ではjsファイルでの実装になっており、型定義が行われていませんでした。
ですが私は環境構築時にtypescriptもインストールして.tsxファイルでの実装をした為、「型定義をしてませんよ」と怒られた、というのが今回のエラーの内容です。
型定義をしたところ解決しました。

修正前コード

Forfilter.tsx
import React from 'react';

export default function ForList({ src }) {
    return (
    <dl>
      {src.map(elem => (
        <React.Fragment key={elem.isbn}>
          <dt>
            <a href={`https://wings.msn.to/books/${elem.isbn}/${elem.isbn}.jpg`}>
                {elem.title}{elem.price}
            </a>
          </dt>
          <dd>{elem.summary}</dd>
        </React.Fragment>
      ))}
    </dl>
    );
  }

関連コード

Index.tsx
import books from './books';
import Forfilter from './ForFilter';


const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement
);
root.render(
  <Forfilter src={books} />
);
books.js
const books = [
  {
    isbn: '978-4-8156-1336-5',
    title: 'これからはじめるVue.js 3実践入門',
    price: 3740,
    summary: 'JavaScriptフレームワーク「Vue.js」について解説した入門書です。',
    download: true,
  },
  ・・・
  ]
export default books;

エラー内容

Binding element 'src' implicitly has an 'any' type.

修正後コード

Forfilter.tsx
import React from 'react';

type Book = {
    isbn: string;          // ISBNコードは文字列型
    title: string;         // 書籍タイトル
    price: number;         // 価格は数値型
    summary: string;       // 書籍の説明
    download: boolean;     // ダウンロード可能かどうかのフラグ
};

type ForListProps = {
    src: Book[];           // `src`はBook型の配列
};


export default function ForFilter({ src }: ForListProps){
    return(
        <dl>
            {src.map(elem => (
                <React.Fragment key={elem.isbn}>
                <dt>
                    <a href={`https://wings.msn.to/books/${elem.isbn}/${elem.isbn}.jpg`}>
                        {elem.title}{elem.price}
                    </a>
                </dt>
                <dd>{elem.summary}</dd>
                </React.Fragment>
            ))}
        </dl>
    )
}

無事解決しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?