Задать вопрос
@QWERTY01

Почему происходит ошибка типизации computed сomposition api во vue 3?

Вот есть прямое указание из документации https://vuejs.org/guide/typescript/composition-api...

Делаю так же, но не работает
<script lang="ts">
import { computed, ComputedRef, defineComponent } from 'vue'

export default defineComponent({
    const pErrorMinMessage = computed<string>(() => {
      return 'world'
    })
    const fun1 = function (val: string) {
      console.log('hello + val)
    }

  fun1(pErrorMinMessage)
})
</script>


Текст ошибки следующий:
Argument of type 'ComputedRef' is not assignable to parameter of type 'string'.

Нашел так же такое решение на стаковерфлоу
https://stackoverflow.com/questions/60856216/how-t...
сделал также, однако ошибка такая же.
<script lang="ts">
import { computed, ComputedRef, defineComponent } from 'vue'

export default defineComponent({
   const pErrorMinMessage:ComputedRef<string> = computed(():string => {
      return 'world'
    })
    const fun1 = function (val: string) {
      console.log('hello + val)
    }

  fun1(pErrorMinMessage)
})
</script>


Не совсем понимаю, в связи с чем это происходит?
P.S. если поставить any, то есть чтобы было так: pErrorMinMessage:any = computed(():string => { ..... ,то все работает
  • Вопрос задан
  • 814 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
bingo347
@bingo347 Куратор тега TypeScript
Crazy on performance...
А что Вам не понятно в описании текста ошибки?
Argument of type 'ComputedRef' is not assignable to parameter of type 'string'.

Давайте я засуну в переводчик за Вас:
Аргумент типа 'ComputedRef' не может быть присвоен параметру типа 'string'.


const pErrorMinMessage = computed<string>(() => {
  return 'world'
})
const fun1 = function (val: string) {
  console.log('hello' + val)
}

fun1(pErrorMinMessage.value)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@wonderingpeanut
Зачем тип для computed указывать? Оно все типизировано. Тайпскрипт сможет выявить тип переменной сам.

Касаемо вопроса, у меня оба примера, которые ты привел, работают корректно. Если эти примеры это точная копия твоего кода, то может проблема в отсутствующей кавычке?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы