Вам понадобится утверждение типа, чтобы обойти его, самый безопасный способ использовать сопоставленный тип, который удаляет readonly
из типа:
type Mutable<T> = {
-readonly [P in keyof T]: T[P];
};
class TEST {
public readonly desc!: string;
constructor() {
const compute = () => {
(this as Mutable<TEST>).desc = "description"
};
}
}
readonly
- довольно слабый модификатор, поэтому, если вы не возражаете передать this
в качестве параметра, вы можете избежать утверждения:
class TEST {
public readonly desc!: string;
constructor() {
const compute = (target: Mutable<TEST>) => {
target.desc = "description"
};
compute(this)// works fine and not just because we are in teh constructor
}
}