请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

有个疑问,一个可以加括号,另一个加括号就报错

<script lang="ts">
import { ref, computed, reactive, toRefs } from "vue";
interface DataProps {
  count: number;
  double: number;
  increase: () => void;
  numbers: number[];
  person: { name?: string };
}
export default {
  name: "App",
  setup() {

    const data: DataProps = reactive({
      count: 0,
      increase: () => { data.count++ },
      double: computed(() => data.count * 2 ),
      numbers: [1, 2, 3],
      person: {}, //初始空对象
    });
    data.numbers[0] = 5; //第一项更新成5
    data.person.name = "Test";

    const refData = toRefs(data);

    return {
      ...refData,
    };
  },
};
</script>

请问,setup()函数里面的
double: computed(() => data.count * 2 )
加括号写成
double: computed(() => {data.count * 2} ),
就报错,而increase 后面的increase: () => { data.count++ }, 可以加大括号,这是什么原因呢

正在回答

插入代码

1回答

同学你好 需要加强基础知识学习欧 不加括号 其实默认等于  computed(() => { return data.count * 2}) 也就是说它返回的是 number 类型,正好和你的 type 对应的 double: number;  后面你加了括号,它是没有返回的,也就是 void,这时候 void 不等于 number,所以报错。 而 increase: () => { data.count++ } 它也没有返回所以是个 () => void 类型,和你的定义正好相同。所以不会报错。

2 回复 有任何疑惑可以回复我~
  • 提问者 Sam元 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-10-06 17:01:02
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号