質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

10823閲覧

型 '{ children: Element[]; }' には型 'IntrinsicAttributes' と共通のプロパティがありません。

607842

総合スコア8

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/07/17 19:46

TypeScriptを用いたReactで、react-router-domを使いたいですがエラーが出ていて解決できません。

  • App.tsx

tsx

1import React from 'react' 2import Home from './pages/Home' 3 4 5function App() { 6 return ( 7 <div> 8 <Home /> 9 </div> 10 ) 11} 12 13export default App 14
  • Home.tsx

tsx

1import React from 'react' 2import { Button, TitleDesc } from '../components/Index' 3import { Link } from 'react-router-dom' 4import Router from '../router' 5 6type HomeProps = { 7 children: Element[]; 8} 9 10const Home: React.FC<HomeProps> = ({ children }) => { 11 return ( 12 <> 13 <Router> 14 <div> 15 <div>Hii</div> 16 <div> 17 <Link to='/login'><Button color='green'>ログイン</Button></Link> 18 <Link to='/register'><Button color='blue'>登録</Button></Link> 19 </div> 20 </div> 21 <TitleDesc title='Hiについて' desc='Hi' /> 22 </Router> 23 </> 24 ) 25} 26 27export default Home
  • router.tsx

ts

1import * as React from 'react' 2import { BrowserRouter, Route, Switch } from 'react-router-dom' 3import Login from './pages/Login' 4import Register from './pages/Register' 5import Home from './pages/Home' 6 7const Router = () => { 8 return ( 9 <BrowserRouter> 10 <Switch> 11 <Route exact path='/' component={Home} /> 12 <Route exact path='/Login' component={Login} /> 13 <Route exact path='/Register' component={Registerl} /> 14 <Route component={() => <h1>204 No Content</h1>} /> 15 </Switch> 16 </BrowserRouter> 17 ) 18} 19 20export default Router

エラー内容

App.tsx

  • プロパティ 'children' は型 '{}' にありませんが、型 'HomeProps' では必須です。
  • 'children' はここで宣言されています。

Home.tsx

  • 型 '{ children: Element[]; }' には型 'IntrinsicAttributes' と共通のプロパティがありません。
  • 'children' is defined but never used.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

プロパティ 'children' は型 '{}' にありませんが、型 'HomeProps' では必須です。

Home側でchildrenを必須と宣言してしまっているので、<Home />childrenなしの指定ではエラーとなります。

型 '{ children: Element[]; }' には型 'IntrinsicAttributes' と共通のプロパティがありません。
'children' is defined but never used.

関数コンポーネントで、(render propsで特殊な値を引数とする状況でなければ)childrenは自分で定義しなくてもReactの型定義が自動で入ります

それと矛盾したchildrenの型を定義するのは、今回のようにエラーを生むだけです。

投稿2021/07/17 23:51

編集2021/07/17 23:52
maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

607842

2021/07/18 02:00 編集

ご回答頂き助かります! import React from 'react' import { Button, TitleDesc } from '../components/Index' import { Link } from 'react-router-dom' import Router from '../router' const Home: React.FC = ( ) => { return ( <> <Router> <div> <div>Hii</div> <div> <Link to='/login'><Button color='green'>ログイン</Button></Link> <Link to='/register'><Button color='blue'>登録</Button></Link> </div> </div> <TitleDesc title='Hiについて' desc='Hi' /> </Router> </> ) } export default Home childrenの型定義を取り除きましたが、以下のエラーが残ったままになってしまっています。 型 '{ children: Element[]; }' には型 'IntrinsicAttributes' と共通のプロパティがありません。
maisumakun

2021/07/18 02:15

どの行に対して当該のエラーが出ていますか?
607842

2021/07/18 09:04 編集

Home.tsx、8行目の<Router>です。
maisumakun

2022/01/06 00:38

コードの意図がわかりません。 Routerは、childrenを取らないコンポーネントとして定義されているので、そこに子要素を渡しても無視されるだけです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問