为啥typescript的类型系统不支持通过属性来选择子类型?
因为有namespacenamespace A { export type A = number}interface A { A: string}type b = Atype c = A.A
可以看到,b和c的类型分别是number和string,两种写法有两个意思。
■网友
蟹妖哈,我就不查资料了。其实没什么,理论上支持那样的写法没有难度,但是编译会变慢的(编译器多跑点语法树),这玩意没有标准,基本也算是TS首创的,如果硬要编个什么理由,大概如下:
1、T最早是给范型设计的,所以优先支持中括号,比如:type TypeA = { a:number; b:string;}type TypeB= TypeA; // 这里TypeB = number | string
所以上面不可能用点号吧;
2、点号一般是模块或者对象实例才支持被索引,这里type本身更类似class、构造器:class ClassA{ readonly a: string = \u0026#39;ABC\u0026#39;;}ClassA.a; //so what?new ClassA().a //is ok!
【为啥typescript的类型系统不支持通过属性来选择子类型?】
推荐阅读
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 为啥5G和2.4G默认的BSSID是相同的
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
- 为啥电器实体店的价格比淘宝贵那么多
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 为啥到现在你还没有女朋友 ?