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

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

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

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

TypeScript

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

Q&A

1回答

844閲覧

Vue3 CompositonAPIのPropsと型推論について

Hayato1201

総合スコア231

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

TypeScript

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

0グッド

1クリップ

投稿2021/12/18 09:26

編集2021/12/22 13:30

こちらに書いてある通りCompositonAPIでpropsの型を定義していてもsetupの引数にpropsを指定する際には型を記述する必要がない様です。

TS

1export type HogePros = { 2 huga: number 3 piyo: string 4} 5-------------- 6 7 props: { 8 huga: { 9 type: Number, 10 required: true, 11 default: '', 12 }, 13 piyo: { 14 type: String 15 default: null, 16 }, 17} 18 19setup(props: HogePros) {

上記の様に型を指定してもエラーにはなりませんがこれをすると逆に型推論されない様でした。(setup内でprops.まで入力した際にhugaやpiyoの選択肢が出て来ない)
propsとなるオブジェクトにはそもそも型を上記の様に指定しないのが正しい設計なのでしょうか?
とはいえpropsに入る値を制限したい場合propsに型を指定したい事もあるかと思いますがそのような場合はどうするのが良いのでしょうか?

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

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

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

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

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

guest

回答1

0

自分もビギナーなので、詳しくは説明できないのですが。

TS

1 props: { 2 huga: { 3 type: Number, 4 required: true, 5 default: '', 6 }, 7 piyo: { 8 type: String 9 default: null, 10 },

上記をdefineComponent内に記載されているので、これが型指定に該当し、同内setup()での型指定は不要で省略できるのだと思います。

TS

1setup(props) {

この用法で候補のメンバーが選択肢として出るかと思います。
ご参考までに。

投稿2021/12/18 14:25

BlueMoon

総合スコア1339

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

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

Hayato1201

2021/12/22 13:29

ご回答ありがとうございます。 >これが型指定に該当し、同内setup()での型指定は不要で省略できるのだと思います はい、それはそうなのですが、propsの型としてはHogeProsの様な型を作ってpropsにとる値を制限したい場合はどの様に型を指定すれば良いのでしょうか?
BlueMoon

2021/12/22 14:26

hogeでtype:Number,piyoでtype:Stringを指定されていますね。これが制限に該当すると思います。例えば親コンポーネントにてhogeにstring型を代入したらエラーになると思います。 また、自分の書いたコードではsetup中ではprops.メソッドは書き込み禁止となっています。
BlueMoon

2021/12/22 14:33

補足します。実際にエラーになるのはVisualStudioCode上だけで、コンパイルは通ってしまうようでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問