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

2022-04-29 01:56:51 +08:00
 TWorldIsNButThis

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

xxxx 
  ? aaaa
  : bbbb

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

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

5328 次点击
所在节点    程序员
29 条回复
WuSiYu
2022-04-29 02:30:54 +08:00
三目套三目写复杂逻辑的一律认为有大病
(除非是 verilog ,doge )
TWorldIsNButThis
2022-04-29 02:38:31 +08:00
@WuSiYu 三目是 typescript 类型语言的核心语法 🐶
yuzo555
2022-04-29 02:41:40 +08:00
只要加了括号,编辑器能主动高亮匹配的括号,我没什么意见。
liuidetmks
2022-04-29 06:14:29 +08:00
if a return a
else return b 你不觉得麻烦?

还有,不是一些框架 只能接受 表达式吗 ,vue 里面
golangLover
2022-04-29 08:07:47 +08:00
typescript 的程序员写代码都有临深为高的感觉
Lighfer
2022-04-29 08:26:34 +08:00
@liuidetmks return a || b
djs
2022-04-29 08:47:45 +08:00
最近参考人家的写了个类型生命,长见识了…
focuxin
2022-04-29 08:53:14 +08:00
const {name} = this.options || {};
superfatboy
2022-04-29 09:36:01 +08:00
天天写 ts ,天天用三母,爽的一批,开始学 go 了,发现没三目,很难受
ZE3kr
2022-04-29 09:38:30 +08:00
is_a ? b : is_c ? d : is _e ? f : g
完美
nothingistrue
2022-04-29 09:43:17 +08:00
Java 里面,三目运算符不是用来赋值的,或者赋值加三目表达式加起来超过一行或换行,是要被打死的。

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

```typescript

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

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/849932

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX