Можно создать DeepReadonly
типа так:DeepReadonly Объект машинопись
type DeepReadonly<T> = {
readonly [P in keyof T]: DeepReadonly<T[P]>;
};
interface A {
B: { C: number; };
D: { E: number; }[];
}
const myDeepReadonlyObject: DeepReadonly<A> = {
B: { C: 1 },
D: [ { E: 2 } ],
}
myDeepReadonlyObject.B = { C: 2 }; // error :)
myDeepReadonlyObject.B.C = 2; // error :)
Это здорово. Оба значения: B
и B.C
- только для чтения. Когда я пытаюсь изменить D
однако ...
// I'd like this to be an error
myDeepReadonlyObject.D[0] = { E: 3 }; // no error :(
Как я должен написать DeepReadonly
так, что вложенные массивы предназначены только для чтения, а?
Я не получаю сообщение об ошибке 'console.log (myDeepReadonlyObject.D [0]);' Какую версию машинописного текста вы используете? –
У меня был флаг «noImplicitAny», установленный в моем tsconfig. Однако вопрос все еще стоит. Я обновил его, чтобы быть более ясным. Благодарю. –