• 请不要在回答技术问题时复制粘贴 AI 生成的内容
TWorldIsNButThis
V2EX  ›  程序员

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

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

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

    xxxx 
      ? aaaa
      : bbbb
    

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

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

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

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

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

    ```typescript

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

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

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

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