جاوااسکریپت - تایپاسکریپت «نمیتوان به ویژگی اختصاص داد، زیرا یک ثابت یا فقطخواندنی است» حتی با این که ویژگی بهصورت فقطخواندنی علامتگذاری نشده است
من کد زیر را دارم
type SetupProps = {
defaults: string;
}
export class Setup extends React.Component<SetupProps, SetupState> {
constructor(props: any) {
super(props);
this.props.defaults = "Whatever";
}
هنگام تلاش برای اجرای این کد، کامپایلر TS خطای زیر را برمیگرداند:
نمیتوان به 'defaults' اختصاص داد زیرا یک ثابت یا یک ویژگی فقط خواندنی است.
چطور deafualts یک خاصیت فقطخواندنی است، وقتی که واضح است به این صورت علامتگذاری نشده است.
پاسخ شماره ۱
شما React.Component را گسترش میدهید و آن props را به صورت Readonly<SetupProps> تعریف میکند
class Component<P, S> {
constructor(props: P, context?: any);
...
props: Readonly<{ children?: ReactNode }> & Readonly<P>;
state: Readonly<S>;
...
}
منبع
اگر میخواهید برخی مقادیر پیشفرض را اختصاص دهید، میتوانید چیزی شبیه به این استفاده کنید:
constructor({ defaults = 'Whatever' }: Partial<SetupProps>) {
super({defaults});
}
