Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单的TypeScript类给出了TypeError_Javascript_Reactjs_Typescript_Webpack - Fatal编程技术网

Javascript 简单的TypeScript类给出了TypeError

Javascript 简单的TypeScript类给出了TypeError,javascript,reactjs,typescript,webpack,Javascript,Reactjs,Typescript,Webpack,我想在App.tsx文件中使用文件Classes.tsx中的class Literal,但即使它们在同一个文件中,TypeScript也会返回TypeError。 这对我很有用 错误:TypeError:无法设置的属性str,该属性只有一个getter 为什么?有两种解决方案: 添加设置器 将声明更改为getter(从抽象str:string;更改为抽象get str():string; 不确定,但可能与您没有为抽象字符串字段设置值有关?如果您将其定义为抽象只读str:string? // Cl

我想在App.tsx文件中使用文件Classes.tsx中的class Literal,但即使它们在同一个文件中,TypeScript也会返回TypeError。 这对我很有用

错误:
TypeError:无法设置的属性str,该属性只有一个getter


为什么?

有两种解决方案:

  • 添加设置器
  • 将声明更改为getter(从
    抽象str:string;
    更改为
    抽象get str():string;

  • 不确定,但可能与您没有为抽象字符串字段设置值有关?如果您将其定义为
    抽象只读str:string
    // Classes.tsx
    abstract class Expression {
      abstract val: boolean;
      abstract str: string;
    }
    
    class Literal extends Expression {
      val: boolean;
      constructor(value: boolean) {
        super();
        this.val = value;
      }
      get str(): string {
        return this.val ? "W" : "F";
      }
    }
    
    // App.tsx
    import { Expression, Literal } from "./Classes";
    
    let F: Literal = new Literal(false);