vue3.0 的 typescript interface 怎么写?

  1. interface如下:
interface DataProps {
      menuData: [{ id: string, systemNm: string, count: string, checked: boolean }],
      topicData: [],
      pageNum: number,
      systemNm: string,
}

2.初始化如下:

    const state: DataProps = reactive({
      menuData: [{ id: "", systemNm: "", count: "", checked: null }],
      topicData: [],
      pageNum: 1,
      systemNm: ''
    });

还是提示不匹配!

阅读 3.7k
2 个回答

使用泛型

const state = reactive<DataProps>({
      menuData: [{ id: "", systemNm: "", count: "", checked: null }],
      topicData: [],
      pageNum: 1,
      systemNm: ''
});

reactive ts类型

function reactive<T extends object>(target: T): UnwrapNestedRefs<T>

ts在vue的应用示例:

// props
withDefaults(defineProps<{ msg: string }>(), {
  msg: 'Hello World!'
})
// emit
defineEmits<
  (event: 'click-handle', num: number): void
>()
// reactive
interface UserInfo {
    name: string
    age: number
}
const userInfo = reactive<UserInfo>({
    name: 'CCC的小跟班',
    age: 18
})
// ref
const flag = ref<boolean>(false)
// expose
defineExpose<{childFunc:(num:number) => void}>({
  childFunc
})

menuDatacheck 声明的是 boolean 类型,
但是初始化的时候给的是 null 值,不属于 boolean 类型。
要么把初始值改为 truefalse,要么把类型改为 boolean | null 或者 boolean | null | undefined

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题