type Foo = {a: number}
let obj: Foo = {} as Readonly<Foo>
let arr: number[] = [] as ReadonlyArray<number>
我了解
ReadonlyArray
类型会移除任何可变的Array
方法,这意味着只读数组不符合预期的数组接口。但我不明白为什么只读对象被认为是安全的传递到一个期望可变对象的函数中。在技术上,只读对象缺少一个隐式的setter方法,所以它实际上并没有遵循预期的可变接口。 Playground链接