ts的extends问题,同时求推荐ts学习文章?-灵析社区

代码日记

在学习ts的类型的时候遇到这个问题,很是迷惑 type MyEqual = (() => T extends X ? 1 : 2) extends (() => T extends Y ? 1 : 2) ? true : false; 这里我理解的是判断T是否同时继承类型X,Y,从而判断X,Y是否是同一类型?(这里不理解,假如T是"symbol|number|string",X是"string",Y是:"number",岂不是得出了X与Y相同?) 还有第二个extends看上去像是判断两个数值是否相等的意思?不能用===吗?有点看不懂ts里面的extends

阅读量:255

点赞量:16

问AI
ts 的类型运算是没有 == 运算符的吧,所以只能用 A extends B ? C : D 表达式来判断类型是否相等。这里的 extends 可以理解为 A 是否是 B 的子集,或者子类型。 这里判断两个类型是否相等和 T 的关系不大,是通过判断两个范型函数的类型是否一致,来判断 X 和 Y 的类型是否一致。 写成这样也是可以的: type Equals = (() => T extends X ? 1 : 2) extends (() => U extends Y ? 1 : 2) ? true : false; "Github 讨论地址" (https://link.segmentfault.com/?enc=MY5Cqc7RkCnnNyORnR7M8w%3D%3D.JJF0WF9z05wlDPNP1o8r0yhgRFAWgtpTBvfRW5dDQGWg5ZygVRgrFAKsC687Wvypzd3PlLB1B9WdFIFqqu2rXC5svB6N5A4AjpYSDaLGnNw%3D) TypeScript 的书推荐两本: 1. 阮一峰的 "《TypeScript 教程》" (https://link.segmentfault.com/?enc=XJ1QWy5DUUeLQrhLblac4g%3D%3D.AfE6rVNifvMgANZemu%2BhIYCM6LrpAKl5wWJDgx2zCp0%3D) 2. "《深入理解 TypeScript》" (https://link.segmentfault.com/?enc=gAmF5cyluwQtumvDq%2FN4fA%3D%3D.aclrTN8sNNYPX2TuLfvHJoN3S8nxeMBwV0LsAFqLB3C4Byt3e47eZgI7agm%2BVostUIyBnrXCZzzLuvN5cKz2tA%3D%3D)