Vue 3:輸入'數字|布林值'不可指派給型別「number」;
P粉156983446
P粉156983446 2023-12-05 18:50:47
0
1
635

我正在使用 Vue 3 和 Composition API,目前我正在嘗試在我的專案中新增 Typescript。

我有一個「全域輸入」元件,我可以呼叫它來建立我想要的任何輸入。然後,該元件將根據“inputType”道具渲染另一個輸入元件。例如,我可以像這樣使用全域輸入:

<InputBlock input-type="number" :value="15" :min="0" :max="100" />
<InputBlock input-type="check" :value="true" />

InputBlock 看起來像這樣:

<script setup lang="ts">
import InputNumber from "./InputNumber.vue"
import InputCheck from "./InputCheck.vue"

const props = defineProps({
  value: { type: [Boolean, Number], required: true }, // Here the value can be type Boolean|Number
  inputType: { type: String, required: true },
  // ...
})
</script>

<template>
  <InputCheck v-if="intputType === 'check'" :value="value" />
  <InputNumber v-if="intputType === 'number'" :value="value" /> <!-- Here it is supposed to be Number -->
</template>

我的 InputNumber 看起來像這樣:

<script setup lang="ts">
const props = defineProps({
  value: { type: Number, required: true },
  // ...
}}
</script>

如您所注意到的,InputBlock 元件可以接收不同類型的值,因為該值將由不同的子元件使用。但每個子元件的 value 屬性只能接受一種型別。在我的 InputBlock 中,我收到此錯誤: Type 'number | boolean」 無法指派給型別「number」。型別「boolean」無法指派給型別「number」.

你知道我如何告訴 Typescript InputCheck 中傳遞的值將會是一個 Number 而不是 Number|Boolean 嗎?有沒有辦法「強制」或「強制轉換」變數?或者我在這裡做錯了什麼?

P粉156983446
P粉156983446

全部回覆(1)
P粉274161593

它會傳回一個錯誤,因為打字稿不知道 inputType.type 和值類型是相關的。

你可以試試


或這個

sssccc


熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板