12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Nuxt.js 2.10 + TypeScript propsに独自定義した型を指定する

Posted at

今回は「公式ドキュメントをちゃんと読みましょう」というお話。

NuxtをTypeScriptで作っていて独自定義した型をpropsの型として使いたくてちょっとだけハマったのでメモします。

MyType.ts
type MyType = {
  hoge: string,
  huga: string
}

export default MyType;

こういう独自定義の型をpropsに指定したい場合

MyComponent.vue
<script lang="ts">
import Vue from 'vue';
import MyType from '~/path/to/MyType';

export default Vue.extend({
  ...
  props: {
    myProp: MyType,
  }
  ...
})
</script>

みたいに何も考えずに指定すると実行時エラーになります。
TS2693: 'MyType' only refers to a type, but is being used as a value here

ちょっとハマりましたが、他でもないNuxt TypeScript公式ドキュメントに書いてありました。

それを参考に先ほどのvueファイルを修正すると

MyComponent.vue
<script lang="ts">
import Vue, { PropOptions } from 'vue';
import MyType from '~/path/to/MyType';

export default Vue.extend({
  ...
  props: {
    myProp: {type: Object} as PropOptions<MyType>,
  }
  ...
})
</script>

こうなります。PropOptionsのimportをお忘れなく。

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?