打字稿"不能分配给属性,因为它是常量或只读的#34;即使财产没有标记为只读

时间:2017-11-30 12:47:02

标签: javascript reactjs typescript readonly

我有以下代码

type SetupProps = {
    defaults: string;
}

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

尝试运行此代码时,TS编译器返回以下错误:

  

无法分配到&#39;默认值&#39;因为它是常数或只读   属性。

如果deafualts显然没有以这种方式标记,<?php while ($row = mysqli_fetch_assoc($slide1_result)) {如何成为只读属性。

1 个答案:

答案 0 :(得分:1)

您正在扩展React.Component,并将props定义为Readonly<SetupProps>

class Component<P, S> {
    constructor(props: P, context?: any);
    ...
    props: Readonly<{ children?: ReactNode }> & Readonly<P>;
    state: Readonly<S>;
    ...
}

Source

如果要分配一些默认值,可以使用以下内容:

constructor({ defaults = 'Whatever' }: Partial<SetupProps>) {
    super({defaults});
}