web-dev-qa-db-ja.com

プロパティが読み取り専用としてマークされていない場合でも、タイプスクリプト「プロパティは定数または読み取り専用であるため、割り当てられません」

私は次のコードを持っています

type SetupProps = {
    defaults: string;
}

export class Setup extends React.Component<SetupProps, SetupState> {
    constructor(props: any) {
        super(props);
        this.props.defaults = "Whatever";
}

このコードを実行しようとすると、TSコンパイラは次のエラーを返します。

定数または読み取り専用プロパティであるため、「デフォルト」に割り当てることができません。

deafualtsが読み取り専用プロパティであるのは、明らかにこのようにマークされていない場合です。

8
Hentov

React.Componentを拡張し、propsReadonly<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});
}
1
Aleksey L.