"extends" 判断的依据是类型是否是 assignable(能赋值的),而 "readonly" 并不能影响类型的 assignable 特性。
通过 Google 找到一个能够判别 "readonly" 的方法,仅供参考:
type IsEqual = (() => T extends A ? 1 : 2) extends () => T1 extends B ? 1 : 2 ? true : false;
type A = IsEqual; // false
代码出处:"https://github.com/microsoft/TypeScript/issues/27024#issuecomment-510924206" (https://link.segmentfault.com/?enc=L1QjRm8%2BTp3oYF5O58Bgzg%3D%3D.CDY6u6T2DlOzOJwkVqpDKKZzOr%2FwFBTqeVAnddGLTNxJqlQ9fsGmNzvFbLaQEW4CaJbftgNXkfgUluGhSkJuM2QMPMFcr6une1wLTKamjF8%3D)
希望对你有所帮助!