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

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

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

ESLintは、JavaScriptのための構文チェックツール。全検証ルールを自由に on/offでき、独自のプロジェクトに合わせたカスタムルールを容易に設定することが可能。公開されている様々なプラグインを組み込んで使用することもできます。

TypeScript

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

React.js

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

Q&A

解決済

1回答

1273閲覧

関数の型をFunctionにしたら、eslintのエラー

gomes_2222

総合スコア90

ESLint

ESLintは、JavaScriptのための構文チェックツール。全検証ルールを自由に on/offでき、独自のプロジェクトに合わせたカスタムルールを容易に設定することが可能。公開されている様々なプラグインを組み込んで使用することもできます。

TypeScript

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

React.js

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

0グッド

0クリップ

投稿2023/03/03 06:35

編集2023/03/03 07:10

実現したいこと

Eslintのエラーが出ました。
プログラムが動かなくなるわけではないのですが、直したいです。

前提

別のサイトを参考に見ながら簡単なtodoアプリを作ったのですが、eslintが反応しました。(見てたサイトはeslint使ってません)、直す方法を教えてください。

発生している問題・エラーメッセージ

Don’t use `Function` as a type. The `Function` type accepts any function-like value. It provides no type safety when calling the function, which can be a common source of bugs. It also accepts things like class declarations, which will throw at runtime as they will not be called with `new`. If you are expecting the function to accept certain arguments, you should explicitly define the function shape @typescript-eslint/ban-types

該当のソースコード

Form

1 2import React from 'react'; 3 4interface TodoProps { 5 open: boolearn 6 setOpen: Function 7} 8 9 export const Form = ({ open, setOpen, doYes, doNo }: TodoProps) => { 10 11/*略*/ 12 13 return ( 14 <div> 15 <Button onClick={/**略*/}> 16 Submit 17 </Button> 18 </div> 19 ) 20 } 21 22export default Form 23

Top

1import React, { useState } from 'react'; 2import Modal from 'react-modal' 3 4const [open, setOpen] = useState(false); 5 6const start = () => { 7 setOpen(false) 8 } 9 10 export const Top = () => { 11 12/*略*/ 13 14 return ( 15 <div> 16 <button onClick={() =>start()}>DoForm</button> 17 <Modal isOpen={open} > 18 <Form open={open} setOpen={setOpen} /> 19 </Modal> 20 </div> 21 ) 22 } 23 24export default Form

試したこと

調べたのですが、今回のような関数は(いわゆるコールバック関数?)
戻り値のvoidを指定したりしたらよいとありましたが、具体的に自分のケースだとどのように落とし込んだらいいのかわかりませんでした。

以下NGパターン。エラーが消えませんでした。

Top

1import React, { useState } from 'react'; 2import Modal from 'react-modal' 3 4const [open, setOpen] = useState<boolearn>(false);/*boolearn追加*/ 5 67``` 8``````Form 9interface TodoProps { 10 open: boolearn 11 isOpen: () => boolean; 12} 13 1415``` 16### 補足情報(FW/ツールのバージョンなど) 17react 18typescript 19eslint

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

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

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

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

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

maisumakun

2023/03/03 06:39

> 色々書いてみましたが、理解が薄いせいか、全くエラーが直りません。 試したことを示してください。あと、コンポーネント側はisOpenなのにJSXではsetOpenと書いていますが、これは例示する際に間違えたのでしょうか。
gomes_2222

2023/03/03 07:09

追記と修正をしました。
gomes_2222

2023/03/03 07:10

後者については私の記載ミスでした。認識の通りです
guest

回答1

0

ベストアンサー

() => booleanは、「引数なしで、booleanを返す関数」という意味です。

渡す関数とマッチした引数と返り値を設定してください。

投稿2023/03/03 07:11

maisumakun

総合スコア145184

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

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

gomes_2222

2023/03/04 08:28

ありがとうございました。 ご指摘の通りでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問