当前位置: 首页 > 知识库问答 >
问题:

javascript - ts类型报错,新手入坑vue3求大佬指导?

倪举
2024-02-29

ts 类型报错,新手入坑 vue3 求大佬指导

interface 里面有定义 sch_time_arv 为什么还会报错

interface FlightPlanData {  id?: number;  flight_date?: Date;  airlines?: string;  flight_no?: number;  plane_model?: string[];  plane_code?: string[];  sch_time_dpt?: string;  sch_time_arv?: string;}const formData = ref<FlightPlanData>({});const judgeTheSize = () => {  if (    formData.sch_time_arv.length == 4 &&    Number(formData.sch_time_arv) < Number(formData.sch_time_dpt) &&    formData.sch_time_arv != ""  ) {    isTrue.value = true;  } else {    isTrue.value = false;  }};

不会提示类型报错

共有2个答案

左丘照
2024-02-29

你用的是 ref,所以需要 formData.value.sch_time_arv
或者你可以把 ref 换成 reactive

凌博实
2024-02-29

从你给出的代码中,我们可以看到有几个可能的问题。

首先,你定义了一个FlightPlanData接口,其中sch_time_arvsch_time_dpt的类型都是可选的string。但在judgeTheSize函数中,你试图获取这两个属性的长度,这将会导致类型错误,因为类型系统不知道如何获取字符串的长度。

解决这个问题的一种方法是明确指定这两个属性的类型为string,而不是string[]

然后,你在比较sch_time_arvsch_time_dpt的值时,将它们转换为数字。如果这两个值中的任何一个不是数字,那么这将引发错误。你需要确保这两个值都是有效的数字。

最后,你在比较时使用了<操作符。如果这两个值中的任何一个不是数字,那么这将引发错误。你需要确保这两个值都是有效的数字。

以下是修改后的代码:

interface FlightPlanData {  id?: number;  flight_date?: Date;  airlines?: string;  flight_no?: number;  plane_model?: string[];  plane_code?: string[];  sch_time_dpt: string;  sch_time_arv: string;}const formData = ref<FlightPlanData>({});const judgeTheSize = () => {  if (    formData.sch_time_arv.length == 4 &&    Number(formData.sch_time_arv) < Number(formData.sch_time_dpt) &&    formData.sch_time_arv != "" &&    formData.sch_time_dpt != "" &&    !isNaN(formData.sch_time_arv) &&    !isNaN(formData.sch_time_dpt)  ) {    isTrue.value = true;  } else {    isTrue.value = false;  }};

注意:在上面的代码中,我假设了isTrue.value是一个响应式引用,你需要确保它在你的组件中定义。

 类似资料: