请问一个关于 vue3 和 typescript 的两个非常基础的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kensoz
V2EX    前端开发

请问一个关于 vue3 和 typescript 的两个非常基础的问题

  •  
  •   kensoz 2022-03-28 10:27:00 +08:00 2151 次点击
    这是一个创建于 1372 天前的主题,其中的信息可能已经有所发展或是发生改变。

    都是基础的问题,不过怎么查也没有查到想要的答案,还请各位大佬轻喷

    问题一

    假设我有一个 ts 对象接口,然后我初始化了一个 reactive
    这里我并没有使用?(可选属性)因为我知道所有的属性都是必要的

     interfce TEST { id: number name: string } let test = reactive<TEST>() // 报错 

    我知道没有用可选属性就必须初始所有的属性,所以报错
    但是假如这是一个拥有大量属性的对象,那我也必须初始所有属性?
    比如一个 vue 文件有 2 个 reactive ,一个包括 20 个属性,全部初始化出来感觉很占地方
    请问有没有什么小技巧之类的方法?

    问题二

    还是上面的接口,我初始化了 reactive
    这里面我给了数字类型的 id 一个初始值 0

     let test = reactive<TEST>({ id: 0, name: '', }) 

    初始化数字类型,必须要填入数字
    请问如果我想在 id 为 0 时(初始时或者其他不需要表示的时候)不显示
    只有在逻辑中判断这一种方法嘛?有没有什么 ts 的声明技巧?

    5 条回复    2022-03-28 14:17:29 +08:00
    dcalsky
        1
    dcalsky  
       2022-03-28 11:37:03 +08:00   1
    1: 无,必须手动写默认值
    2: 最好手动判断

    结论:当你想用奇技淫巧来搞一波小操作的时候,就是在给未来留坑。
    gadfly3173
        2
    gadfly3173  
       2022-03-28 11:44:51 +08:00   1
    用了 ts 的话就是为了享受类型定义带来的便利,自然也需要承受类型定义带来的麻烦。用 ts 的时候不要想着用很多 js 里的奇淫技巧,把它当成一般的静态类型语言,比如 java c++之类的,用起来就没那么多问题了
    yukYaoT
        3
    yukYaoT  
       2022-03-28 14:03:53 +08:00   1
    默认值可以使用 断言 指定
    const test = reactive({}) as TEST
    TWorldIsNButThis
        4
    TWorldIsNButThis  
       2022-03-28 14:07:17 +08:00 via iPhone
    实际上 js 里没指定就是未定义行为
    kensoz
        5
    kensoz  
    OP
       2022-03-28 14:17:29 +08:00
    @yukYaoT 谢谢,这确实就是我想要的效果
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5602 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 06:38 PVG 14:38 LAX 22:38 JFK 01:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86