我正在尝试通过继承设置一个不变的,嵌套的数据结构。类型是使用Readonly泛型类型构建的,并且需要其中一种Readonly类型才能扩展其他类型。
type Person = Readonly<{
name : string
}>
type Student = Readonly<{
school : string
}>
我需要学生扩展Person并具有只读名称属性。
答案 0 :(得分:0)
您需要一个中间接口,例如InternalStudent
,它将扩展Person
type Person = Readonly<{
name: string
}>
interface InternalStudent extends Person {
school: string
}
type Student = Readonly<InternalStudent>;
let student: Student = { school: '1', name: '2' } // OK
student.name = '1'; // Error
student.school = '2'; // Error
答案 1 :(得分:0)
您可以这样做
type Person = Readonly<{
name : string
}>
type Student = Person & Readonly<{
school : string
}>
function x(s: Student) {
s.name = "" // error
s.school = "" // error
}