V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fyxtc
V2EX  ›  程序员

为什么 typescript 左边加了类型注解之后不会有 ide 提示,而必须要右边加 as 才行呢

  •  
  •   fyxtc · 338 天前 · 1382 次点击
    这是一个创建于 338 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如服务器给前端的 json 里面返回了一个 data 结构 json={ data:{ name:hikaru } }

    前端定义的 data 结构 type Data={ name:string } const d:Data = json.data 这个时候 d.提示没法出 name ,必须右侧加上 as Data 才会有提示

    第 1 条附言  ·  337 天前
    @jazzg62
    @crysislinux
    @lisongeee
    @DOLLOR
    @CLMan
    重启 vsc 之后正常了,谢谢大家
    jazzg62
        1
    jazzg62  
       338 天前
    不应该,重启下 vscode 试试呢
    looking0truth
        2
    looking0truth  
       338 天前
    你是不是讲反掉了,json 的 type 你给了吗
    CLMan
        3
    CLMan  
       338 天前
    你服务器返回的是运行时数据,是`any`类型的,你不用`as`转换,你还能干嘛?

    服务器返回的数据不是你自己创建的数据,编译器是没法检查的。
    crysislinux
        4
    crysislinux  
       338 天前 via Android
    可能你的 tsconfig. json 里的配置认为你这个转换是非法的。你保持左边不变右边 as any 应该也可以
    Danswerme
        5
    Danswerme  
       338 天前
    你说的这种一般是要用泛型来实现的,类似这种:
    ```
    const res = await http.get<HomeType>("/home");
    ```

    看这个帖子: https://juejin.cn/post/7113475007598034951#heading-9
    Leviathann
        6
    Leviathann  
       338 天前
    不是少了一层 data ?
    agdhole
        7
    agdhole  
       338 天前
    用 webstorm
    lisongeee
        8
    lisongeee  
       338 天前
    ![image]( https://github.com/lisonge/vite-plugin-monkey/assets/38517192/1cd0bc31-5c72-4a92-acf1-eb551494652c)

    我这边是可以的,你的 json.data 的 type 是什么呢
    CLMan
        9
    CLMan  
       338 天前
    @CLMan 是我记错了,anxios 是泛型 API ,默认是 any ,而 any 是不需要`as`转换的,只有`unknown`才需要。
    DOLLOR
        10
    DOLLOR  
       338 天前
    我试了是正常的。
    建议提供完整的可复现示例。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4311 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 05:27 · PVG 13:27 · LAX 22:27 · JFK 01:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.