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

作为 Javaer, Typescript 这个特性太舒服了

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

    可以直接在函数上声明入参和返回值的类型

    function foo(bar: { id: number, name?: string }): { xx: string, oo: string }[]
    

    去他大爷的什么 PO 、VO 、DTO 、XXOO ,还完美解决了起名这个世界难题

    CodeCodeStudy
        1
    CodeCodeStudy  
       318 天前
    不一样,Java 是要先定义一个类才能使用该类的实例化对象,而 TypeScript 是 JavaScript 的超集,js 的类就是一个 {} 包起来的东东
    makelove
        2
    makelove  
       318 天前
    这和 xxO 什么关系吗?
    另外建议这种复杂类型直接独立出来写成 xxO,也好在别的地方用
    micean
        3
    micean  
    OP
       318 天前
    @makelove

    复用很容易产生 NPE 的问题,因为不一定每个使用者都有完全相同的需求
    如果像 kotlin 那样定义好非空,遇上同一个属性有非空、可空的不同需求,又要创建多个类,太麻烦了
    bnm965321
        4
    bnm965321  
       318 天前
    因为是结构化类型,所以可以使用匿名的 interface 。

    rescript / ocaml 的类型更牛皮,可以根据你对参数的时候来推导类型。写 rescript 之后很少主动标注类型。
    IvanLi127
        5
    IvanLi127  
       318 天前 via Android
    要我写还是会在独立的文件里定义好了再拿出来用。你这样不太方便比较大范围的重构。
    qinxi
        6
    qinxi  
       318 天前
    带 key 自动提示的 增强型 map 😂
    Leviathann
        7
    Leviathann  
       317 天前 via iPhone
    我一般还是会用 type 写一下
    除非就两个字段
    micean
        8
    micean  
    OP
       317 天前
    @IvanLi127

    大范围重构确实是很麻烦,但是也比较少吧,那时候要改的也不仅仅是一个参数了


    @Leviathann

    我主要在接口上这么写,连接口文档都懒得写了,直接写在前端的参数上
    monkeyWie
        9
    monkeyWie  
       317 天前
    确实挺爽的,希望 jdk 跟进下啊,搞个语法糖就行了
    4196
        10
    4196  
       317 天前
    TS 的类型系统可是业界领头的🤭
    wisetc
        11
    wisetc  
       52 天前
    我也发现了同样的问题,ts 确确实实值得学习应用。

    ts 是和 c# 是一脉的,而且兼容 js 和 esnext ,可谓静态类型和动态类型集大成者。这里有一本介绍 ts 深入技术的书籍,由貌似印度人的技术大佬所著,不妨学习一下。书籍本身是开源的,这里帮他推广一下,不过是英文的,而且不免费,权当是码字需要耗费的电费了,里面知识却是货真价实,看完至少让人对 ts 认知提升 2 个档次。下链

    https://www.uqugu.com/discover/book/1bn9qe1fdktl96u83k0/?utm_source=v2ex
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3850 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 05:20 · PVG 13:20 · LAX 21:20 · JFK 00:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.