実現したいこと
- 「Vue: This expression is not callable. Type '{}' has no call signatures.」のエラーが出ないようにする
前提
vue3.xでTypeScriptの勉強をしています。
main.tsにてdayjsをインポートして、provideし、別のvueコンポーネントでinjectして使用する際に、
下記のエラーメッセージが表示されました。
発生している問題・エラーメッセージ
Vue: This expression is not callable. Type '{}' has no call signatures.
該当のソースコード
main.ts
1import { createApp } from 'vue' 2import App from './App.vue' 3import router from '@/router/' 4import store from '@/store/' 5 6import dayjs from 'dayjs' 7import 'dayjs/locale/ja' 8dayjs.locale('ja') 9 10const app = createApp(App) 11app.use(store) 12app.use(router) 13app.provide('dayjs', dayjs) 14app.mount('#app') 15
Day.vue
1<template></template> 2<script setup lang="ts"> 3import { ref, inject } from 'vue' 4const dayjs = inject('dayjs') 5const currentTime = ref('') 6 7const bbb = () => { 8 currentTime.value = dayjs().format('YYYY') 9} 10</script>
試したこと
const dayjs = inject('dayjs', null)
にすることで、エラーを回避することはできましたが、とりあえずの対策でしかないような気がします。
根本解決するにはどうしたらよいでしょうか。
また、Day.vueにて、下記のように、型を指定しても、
「Vue: This expression is not callable. Type '{Dayjs}' has no call signatures.」
が発生しました。
import { Dayjs } from 'dayjs' const dayjs = inject<Dayjs>('dayjs')
補足情報(FW/ツールのバージョンなど)
"dayjs": "^1.11.9"
"vue": "^3.3.4"
"typescript": "~5.1.6"

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/08/06 23:39