这样写 判断不了只读属性和不是只读属性 有什么办法吗(这是为什么T_T)
type IsEqual<T, U> = [T] extends [U] ? ([U] extends [T] ? true : false) : false
type A = IsEqual<{ readonly a: 'A' }, { a: 'A' }> // true 但希望是false
这样写 判断不了只读属性和不是只读属性 有什么办法吗(这是为什么T_T)
type IsEqual<T, U> = [T] extends [U] ? ([U] extends [T] ? true : false) : false
type A = IsEqual<{ readonly a: 'A' }, { a: 'A' }> // true 但希望是false
extends
判断的依据是类型是否是 assignable(能赋值的),而readonly
并不能影响类型的 assignable 特性。通过 Google 找到一个能够判别
readonly
的方法,仅供参考:代码出处:https://github.com/microsoft/TypeScript/issues/27024#issuecomment-510924206
希望对你有所帮助!