以下为ChatGPT自动生成的解答,正确与否请自行判断。 也许你也可以从大家的发帖中找到想要的答案!
BFE.devAI解答 - TypeScript 类型谜题
3. 实现Readonly<T>
可以使用索引类型和readonly
关键字来实现MyReadonly<T>
。
type MyReadonly<T> = { readonly [P in keyof T]: T[P]}
这个类型定义中,通过keyof T
遍历T
类型的所有属性,然后使用readonly
关键字将它们设为只读。
使用示例:
type Foo = { a: string}const a: Foo = { a: 'BFE.dev',}a.a = 'bigfrontend.dev'// OKconst b: MyReadonly<Foo> = { a: 'BFE.dev'}b.a = 'bigfrontend.dev'// Error: Cannot assign to 'a' because it is a read-only property.