我个人觉得三目还可以,但前提是格式化必须严格做到
xxxx
? aaaa
: bbbb
这种格式,这样的话两三层以内都完全不会有歧义,各个分支都看得比较清楚
但是第一次看到包含各种奇奇怪怪格式的三目的类型声明的时候还是不免骂一句,这写的什么寄吧
1
WuSiYu Apr 29, 2022 via iPhone
三目套三目写复杂逻辑的一律认为有大病
(除非是 verilog ,doge ) |
2
TWorldIsNButThis OP @WuSiYu 三目是 typescript 类型语言的核心语法 🐶
|
3
yuzo555 Apr 29, 2022
只要加了括号,编辑器能主动高亮匹配的括号,我没什么意见。
|
4
liuidetmks Apr 29, 2022 via iPhone
if a return a
else return b 你不觉得麻烦? 还有,不是一些框架 只能接受 表达式吗 ,vue 里面 |
5
golangLover Apr 29, 2022 via Android
typescript 的程序员写代码都有临深为高的感觉
|
6
Lighfer Apr 29, 2022
@liuidetmks return a || b
|
7
djs Apr 29, 2022 via iPhone
最近参考人家的写了个类型生命,长见识了…
|
8
ion1ze Apr 29, 2022
const {name} = this.options || {};
|
9
superfatboy Apr 29, 2022
天天写 ts ,天天用三母,爽的一批,开始学 go 了,发现没三目,很难受
|
10
ZE3kr Apr 29, 2022 via iPhone
is_a ? b : is_c ? d : is _e ? f : g
完美 |
11
nothingistrue Apr 29, 2022
Java 里面,三目运算符不是用来赋值的,或者赋值加三目表达式加起来超过一行或换行,是要被打死的。
三目运算符当逻辑操作,还有逻辑运算符里面参杂赋值操作( a is not null && a=2 这种),在脚本语言,还有追求最少操作(并忽略可读性)的算法里面,用得还是很多的。但我不相信 typescript 会把这当核心用法。 |
12
CodeCodeStudy Apr 29, 2022
TypeScript 本来就不是一门独立的语言,TypeScript 的三目就是 JavaScript 的三目
|
13
sunhelter Apr 29, 2022
var a = b switch { 1="A",2="B",_="" };
完美 |
14
zjccc Apr 29, 2022 只是 ts 类型声明也只能用三目了吧,上面的朋友没理解这是啥玩意,贴个膈应人的
```typescript type IsEqual<A, B> = (<T>() => T extends A ? 1 : 2) extends <T1>() => T1 extends B ? 1 : 2 ? true : false ``` |
15
irisdev Apr 29, 2022
楼主说的是这种
race<T>(values: readonly T[]): Promise<T extends PromiseLike<infer U> ? U : T>; |
16
marcong95 Apr 29, 2022
那你对于那种 xxx ? 1 : 0 这种你也要拆 3 行写吗?
|
17
statumer Apr 29, 2022 via iPhone
那你去给 Typescript 贡献个 constexpr 吧。
类型声明这样的 DSL 不用函数式类型体操还想怎样 |
18
libook Apr 29, 2022
代码风格限定协作群体就好了,没必要要求全网所有人按照统一风格来写,否则不如换其他本身格式要求高的语言。
每个团队的人员习惯和水平不一样,需要团队内部对代码风格达成一致,然后以制度和 Lint 规则的形式来约束,确保大家高效协作就好。 |
19
AyaseEri Apr 29, 2022
type Foo<T> = T extends Foo ? T extends Bar ? Omit<T, "options"> : Partial<T> : T
|
20
learningman Apr 29, 2022
ts 的类型声明说不定是编译出来的,给 language-server 看的。。。
|
21
ccraohng Apr 29, 2022
ts 是越智能越复杂
可以看 stitches 的类型。。 |
22
KMpAn8Obw1QhPoEP Apr 29, 2022 via Android
没办法啊 类型操作里只能用表达式 表达式里用来表示 if else 的就是三目运算 别说 if else 了 连逻辑运算都没有 就只能一层一层套
|
23
hujun528 Apr 29, 2022
@superfatboy 用泛型 自己写个三目 方法
|
24
aguesuka Apr 29, 2022
这不是三目运算, 这是 Conditional Types
|
25
wolfie Apr 29, 2022
没三目,代码会丑好多。
|
26
zooeymango Apr 29, 2022
哈哈哈, 有时候写 ts 冒号问号最后写的我自己都晕了
|
27
chenmobuys Apr 29, 2022
js 本来就乱,ts 还要兼容 js ,又要开发一套新的语法,乱上加乱。java 的类型更清晰一点。
|
28
stimw Apr 29, 2022
要这样说 pythonic 其实也有很多奇怪(抄近路)的写法,第一眼还看不懂。
同理 c++ |
29
mosade Apr 30, 2022
众所周知,TypeScript 拥有一个图灵完备的类型系统[手动狗头]
https://github.com/type-challenges/type-challenges/blob/main/questions/08804-hard-two-sum/README.md |