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

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

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

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

React.js

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

Q&A

解決済

1回答

13068閲覧

react typescript  propsでエラーになる

cuku

総合スコア108

TypeScript

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

React.js

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

0グッド

1クリップ

投稿2019/11/22 06:09

reactをtypescriptで書いているのですが
Parameter 'props' implicitly has an 'any' type. TS7006
というエラーになってしまいます。

Title.tsx

react

1import React from 'react'; 2 3const Title = (props) => { 4 return( 5 <div> 6 <h2>{props.title}</h2> 7 </div> 8 ); 9} 10 11export default Title;

わかる人がいたら教えてください

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

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

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

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

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

guest

回答1

0

ベストアンサー

Props の型指定がされていないため、props.title の値が 存在しない可能性があるため、エラーになっています。
以下のように Props の型を指定してあげる必要があるかと思います。

TypeScript

1import React from 'react'; 2 3type Props = { 4 title: stirng 5} 6 7const Title = (props: Props) => { 8 return( 9 <div> 10 <h2>{props.title}</h2> 11 </div> 12 ); 13} 14 15export default Title;

すみません、ベストアンサーに選ばれてしまったのですが、以下追記です。
エラーは上記で解消されるかと思いますが、せっかく TypeScript を使っているのであれば、もっと型安全に書くことが出来ます。
今、Title の型を書いていませんが、これはファンクションコンポーネントなので、React.FC という型になります。
この型は props の型をジェネリクスで指定できるため、

const Title: React.FC<Props> = (props) => {

と書いた方がきれいかと思います。

投稿2019/11/22 06:18

編集2019/11/22 06:28
nerianighthawk

総合スコア544

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

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

cuku

2019/11/22 06:23

ありがとうございます
nerianighthawk

2019/11/22 06:29

エラーは最初の方で解消されると思いますが、 より型安全な書き方があるため、改めて追記しました。
cuku

2019/11/22 06:35

<p onClick = {props.onClick} id= "upgradeButton">Upgrade</p> onclickの場合はどのように指定してあげればいいのでしょうか?
nerianighthawk

2019/11/22 06:49

`onClick` はクリック時に指定する関数だと思うので、とりあえずでいいのであれば `Function` 型を指定してあげればいいかと思います。 ``` type Props = { title: stirng, onClick: Function } ``` ちゃんと型安全にするのであれば、例えば関数が数値を受け取って、文字列を返す場合は `(n: number) => string` といったような型になります。 この場合は props で落とすの引数と返り値が固定されます。 TypeScript は例えばチームで開発をしている場合に、他の人が書いた部分に対して間違った改変をしてしまいバグを生むといった事態を防ぐためにあります。 もちろん、個人であっても昔書いたソースに対して間違った値を props で落としてしまうとかもあると思うので、有用です。 上記のような意図があるため、可能であれば、より型安全になるようにした方が良いです。
cuku

2019/11/22 06:56

``` import React from 'react'; type Props = { title: string, onClick: Function } const Title : React.FC<Props> = (props) => { return( <div className = "titleSection"> <h2 style={{color: '#56D6FB'}}>{props.title}</h2> <p onClick = {props.onClick} id= "upgradeButton">Upgrade</p> </div> ); } export default Title; ``` onClickのとこでエラーになりました Property 'onClick' is missing in type '{ title: string; }' but required in type 'Props'. typeはpropsですと言われているのですがどういうことなんでしょうか?
nerianighthawk

2019/11/22 07:10

そのコンポーネントを呼ぶ側で onClick を指定してあげていますか? もしくは、ちゃんと保存出来ていないとか…
cuku

2019/11/22 07:15

呼んでなかったです!
cuku

2019/11/22 07:19

クラスコンポーネントの書き方がわからないのですが class App extends Component { だとエラーになってしまいます。
cuku

2019/11/22 07:57

onClick呼んだのですが治らなかったです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問