V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
TWorldIsNButThis
V2EX  ›  程序员

特别讨厌三目的人,第一次看到各种库的 typescript 的类型声明是什么感觉

  •  1
     
  •   TWorldIsNButThis · Apr 29, 2022 · 6306 views
    This topic created in 1471 days ago, the information mentioned may be changed or developed.

    我个人觉得三目还可以,但前提是格式化必须严格做到

    xxxx 
      ? aaaa
      : bbbb
    

    这种格式,这样的话两三层以内都完全不会有歧义,各个分支都看得比较清楚

    但是第一次看到包含各种奇奇怪怪格式的三目的类型声明的时候还是不免骂一句,这写的什么寄吧

    29 replies    2022-04-30 00:34:45 +08:00
    WuSiYu
        1
    WuSiYu  
       Apr 29, 2022 via iPhone
    三目套三目写复杂逻辑的一律认为有大病
    (除非是 verilog ,doge )
    TWorldIsNButThis
        2
    TWorldIsNButThis  
    OP
       Apr 29, 2022 via iPhone
    @WuSiYu 三目是 typescript 类型语言的核心语法 🐶
    yuzo555
        3
    yuzo555  
       Apr 29, 2022
    只要加了括号,编辑器能主动高亮匹配的括号,我没什么意见。
    liuidetmks
        4
    liuidetmks  
       Apr 29, 2022 via iPhone
    if a return a
    else return b 你不觉得麻烦?

    还有,不是一些框架 只能接受 表达式吗 ,vue 里面
    golangLover
        5
    golangLover  
       Apr 29, 2022 via Android
    typescript 的程序员写代码都有临深为高的感觉
    Lighfer
        6
    Lighfer  
       Apr 29, 2022
    @liuidetmks return a || b
    djs
        7
    djs  
       Apr 29, 2022 via iPhone
    最近参考人家的写了个类型生命,长见识了…
    ion1ze
        8
    ion1ze  
       Apr 29, 2022
    const {name} = this.options || {};
    superfatboy
        9
    superfatboy  
       Apr 29, 2022
    天天写 ts ,天天用三母,爽的一批,开始学 go 了,发现没三目,很难受
    ZE3kr
        10
    ZE3kr  
       Apr 29, 2022 via iPhone
    is_a ? b : is_c ? d : is _e ? f : g
    完美
    nothingistrue
        11
    nothingistrue  
       Apr 29, 2022
    Java 里面,三目运算符不是用来赋值的,或者赋值加三目表达式加起来超过一行或换行,是要被打死的。

    三目运算符当逻辑操作,还有逻辑运算符里面参杂赋值操作( a is not null && a=2 这种),在脚本语言,还有追求最少操作(并忽略可读性)的算法里面,用得还是很多的。但我不相信 typescript 会把这当核心用法。
    CodeCodeStudy
        12
    CodeCodeStudy  
       Apr 29, 2022
    TypeScript 本来就不是一门独立的语言,TypeScript 的三目就是 JavaScript 的三目
    sunhelter
        13
    sunhelter  
       Apr 29, 2022
    var a = b switch { 1="A",2="B",_="" };
    完美
    zjccc
        14
    zjccc  
       Apr 29, 2022   ❤️ 3
    只是 ts 类型声明也只能用三目了吧,上面的朋友没理解这是啥玩意,贴个膈应人的

    ```typescript

    type IsEqual<A, B> = (<T>() => T extends A ? 1 : 2) extends <T1>() => T1 extends B ? 1 : 2 ? true : false

    ```
    irisdev
        15
    irisdev  
       Apr 29, 2022
    楼主说的是这种
    race<T>(values: readonly T[]): Promise<T extends PromiseLike<infer U> ? U : T>;
    marcong95
        16
    marcong95  
       Apr 29, 2022
    那你对于那种 xxx ? 1 : 0 这种你也要拆 3 行写吗?
    statumer
        17
    statumer  
       Apr 29, 2022 via iPhone
    那你去给 Typescript 贡献个 constexpr 吧。
    类型声明这样的 DSL 不用函数式类型体操还想怎样
    libook
        18
    libook  
       Apr 29, 2022
    代码风格限定协作群体就好了,没必要要求全网所有人按照统一风格来写,否则不如换其他本身格式要求高的语言。

    每个团队的人员习惯和水平不一样,需要团队内部对代码风格达成一致,然后以制度和 Lint 规则的形式来约束,确保大家高效协作就好。
    AyaseEri
        19
    AyaseEri  
       Apr 29, 2022
    type Foo<T> = T extends Foo ? T extends Bar ? Omit<T, "options"> : Partial<T> : T
    learningman
        20
    learningman  
       Apr 29, 2022
    ts 的类型声明说不定是编译出来的,给 language-server 看的。。。
    ccraohng
        21
    ccraohng  
       Apr 29, 2022
    ts 是越智能越复杂

    可以看 stitches 的类型。。
    KMpAn8Obw1QhPoEP
        22
    KMpAn8Obw1QhPoEP  
       Apr 29, 2022 via Android
    没办法啊 类型操作里只能用表达式 表达式里用来表示 if else 的就是三目运算 别说 if else 了 连逻辑运算都没有 就只能一层一层套
    hujun528
        23
    hujun528  
       Apr 29, 2022
    @superfatboy 用泛型 自己写个三目 方法
    aguesuka
        24
    aguesuka  
       Apr 29, 2022
    这不是三目运算, 这是 Conditional Types
    wolfie
        25
    wolfie  
       Apr 29, 2022
    没三目,代码会丑好多。
    zooeymango
        26
    zooeymango  
       Apr 29, 2022
    哈哈哈, 有时候写 ts 冒号问号最后写的我自己都晕了
    chenmobuys
        27
    chenmobuys  
       Apr 29, 2022
    js 本来就乱,ts 还要兼容 js ,又要开发一套新的语法,乱上加乱。java 的类型更清晰一点。
    stimw
        28
    stimw  
       Apr 29, 2022
    要这样说 pythonic 其实也有很多奇怪(抄近路)的写法,第一眼还看不懂。
    同理 c++
    mosade
        29
    mosade  
       Apr 30, 2022
    众所周知,TypeScript 拥有一个图灵完备的类型系统[手动狗头]
    https://github.com/type-challenges/type-challenges/blob/main/questions/08804-hard-two-sum/README.md
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5466 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 112ms · UTC 08:54 · PVG 16:54 · LAX 01:54 · JFK 04:54
    ♥ Do have faith in what you're doing.