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

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

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

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

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

Q&A

解決済

2回答

1133閲覧

TypeScript 「パラメーター 'T' が見つかりません。」

hiroki88

総合スコア66

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

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

0グッド

0クリップ

投稿2022/02/08 17:46

編集2022/02/10 03:23

TypeScript初心者なのでそもそも書き方が間違っていたらすみません。
やりたい事としては変数のチェックを行いたくバリデーション用の関数を作成したのですが、添付した画像のように返り値に指定してある型の部分で「パラメーター 'testType' が見つかりません。」とエラーになってしまいました。
調べて書いたので大きく間違っている訳ではないと思っていますが原因を調べてもエラーが出力される理由がわからず...。もし原因がわかる方がいらっしゃったらご教示頂きたいです。
よろしくお願いします。

TypeScript

1type testType = { 2 id: string, 3 name: string, 4}; 5 6function test(){ 7 const data = { 8 id: "12345", 9 name: "test", 10 } 11 if(validation(data)){ 12 console.log(`id:${data.id} name:${data.name}`); 13 } 14} 15 16function validation(data: unknown):testType is testType{ 17 return typeof data === "object"; 18}

イメージ説明

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

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

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

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

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

takasima20

2022/02/08 21:07

TypeScriptは知らんけど id の後ろにもカンマいるんじゃない?
hiroki88

2022/02/09 06:30

ご指摘ありがとうございます。 おっしゃる通りです、修正しました。
guest

回答2

0

ベストアンサー

エラーメッセージのとおりです。** is **という関数型は、引数名 is 型名である必要がありますが、testTypeという引数はありません。

投稿2022/02/08 21:54

maisumakun

総合スコア145184

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

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

hiroki88

2022/02/09 06:46

ご回答ありがとうございます。 「引数名 is 型名」の引数名とは型引数の認識で合っていますでしょうか? 型引数を追加したソースを添付させて頂いたのですが同じエラーが表示されております。
maisumakun

2022/02/09 07:41

> 引数名 is 型名」の引数名とは型引数の認識で合っていますでしょうか? 違います。関数の引数です。
hiroki88

2022/02/10 03:23

「is」に関する記事を見直したところmaisumakunさんがおっしゃる通り通り引数を指定しないといけませんでした。 ご指摘ありがとうございました!
guest

0

これが実現したいコードかなと思いました!

TypeScript

1type testType = { 2 id: string 3 name: string, 4}; 5 6function test(){ 7 const data = { 8 id: "12345", 9 name: "test" 10 } 11 if(validation(data)){ 12 console.log(`id:${data.id} name:${data.name}`); 13 } 14} 15 16function validation(data: testType):boolean{ 17 return typeof data === "object"; 18}

投稿2022/02/09 02:25

hepokojava

総合スコア51

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

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

hiroki88

2022/02/09 06:41

ご回答ありがとうございます。 自分も当初はこの書き方で良いかと思いましたが「typeof」は使用している関数スコープ内で完結してしまうので呼び出し元のtest関数ではdataがobject型かの絞り込みができておりませんでした。 それを可能にするためisを使用しました。 今回想定しているケースがvalidationに渡されるdataがobjectかチェックしたいので引数のdataの型をunknownにしておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問