Usage with Typescript

Discover how you can setup your project to integrate Strapi with TypeScript

Setup

Thanks to declaration merging, you can tell the TypeScript compiler where to find the $strapi types by adding these lines to your tsconfig.json.

tsconfig.json
{
  "compilerOptions": {
    "types": [
      "@nuxtjs/strapi"
    ]
  }
}

Usage

You now have access to this.$strapi inside your components and to ctx.$strapi inside asyncData, fetch, plugins, middlewares and nuxtServerInit.

In component methods

<script lang="ts">
import Vue from 'vue'

interface BlogPost {
  title: string;
  description: string;
}

export default Vue.extend({
  async data () {
    const post = await this.$strapi.create<BlogPost>(
      'posts',
      {
        title: 'Welcome to Strapi',
        description: 'Strapi is awesome!'
      }
    )

    return {
      post
    }
  }
})
</script>

Notice how you can define the type of the query parameters and of the returned value using generics.

Inside methods that use context

<script lang="ts">
import Vue from 'vue'
import { Context } from '@nuxt/types'

interface BlogPost {
  title: string;
  description: string;
}

export default Vue.extend({
  async asyncData (ctx: Context) {
    const posts = await ctx.$strapi.find<BlogPost[]>(
      'posts'
    )

    return {
      posts
    }
  }
})
</script>
Entity shortcuts will not be correctly picked up by the Typescript compiler, we suggest not to use them if you're using Typescript.
Edit this page on GitHub Updated at Thu, Mar 25, 2021