Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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_Javascript_Typescript_Intellij Idea_Css Selectors_Yfiles - Fatal编程技术网

将JavaScript迁移到TypeScript

将JavaScript迁移到TypeScript,javascript,typescript,intellij-idea,css-selectors,yfiles,Javascript,Typescript,Intellij Idea,Css Selectors,Yfiles,我正在尝试将以下JavaScript代码迁移到TypeScript中 var DemoGroupStyle = yfiles.lang.Class('DemoGroupStyle',{ '$extends': yfiles.styles.NodeStyleBase, 'constructor': function() { yfiles.styles.NodeStyleBase.call(this); }, /** * Backing field for belo

我正在尝试将以下JavaScript代码迁移到TypeScript中

var DemoGroupStyle = yfiles.lang.Class('DemoGroupStyle',{
  '$extends': yfiles.styles.NodeStyleBase,

  'constructor': function() {
    yfiles.styles.NodeStyleBase.call(this);
  },

  /**
   * Backing field for below property
   * @type {string}
   */
  '$cssClass': "",

  /**
   * Gets or sets a custom css class that is assigned to the top level element representing the node.
   * @type {string}
   */
  'cssClass': {
    '$meta': function() {
      return [
        yfiles.graphml.GraphMLAttribute().init({'defaultValue' : ""}),
        yfiles.lang.TypeAttribute(yfiles.lang.String.$class)];
    },
    'get': function() {
      return this.$cssClass;
    },
    'set': function(/**string*/ value) {
      this.$cssClass = value;
    }
  },
我尝试了以下逻辑:

    cssClass: string = "";

    metacssClass() {
        return [new yfiles.graphml.GraphMLAttribute().defaultValue = "", new yfiles.lang.TypeAttribute(yfiles.lang.String.$class)];
    }

    getcssClass() {return this.cssClass;};

    setcssClass(value) {this.cssClass = value};
但如果我想用它来代替它,它就不起作用了


你能告诉我为什么我的逻辑是错误的,我怎样才能改变它吗?

如果你依赖于元数据的东西,那么我担心你将无法真正地将这个类转换为本机TypeScript类。如果您不需要元编程($meta),那么您可以轻松地将其转换为TypeScript,大致如下所示:

  class DemoGroupStyle extends yfiles.styles.NodeStyleBase {

    constructor() {
      super();
    }

    private $cssClass : string;

    get cssClass(): string {
        return this.$cssClass;
    }

    set cssClass(cssClass: string) {
        this.$cssClass = cssClass;
    }
  }
然而,$meta的东西不适用于TypeScript:请参阅和


我的建议是保持这个类使用JavaScript语法(它可以很容易地在常规TypeScript代码中使用,并且与本机TypeScript和ES6类完美共存),并且只转换那些不需要使用元属性的类。

如果您依赖元数据,那么我担心您将无法真正地将这个类转换为本机TypeScript类。如果您不需要元编程($meta),那么您可以轻松地将其转换为TypeScript,大致如下所示:

  class DemoGroupStyle extends yfiles.styles.NodeStyleBase {

    constructor() {
      super();
    }

    private $cssClass : string;

    get cssClass(): string {
        return this.$cssClass;
    }

    set cssClass(cssClass: string) {
        this.$cssClass = cssClass;
    }
  }
然而,$meta的东西不适用于TypeScript:请参阅和


我的建议是使用JavaScript语法保留这个类(它可以很容易地在常规TypeScript代码中使用,并且与本机TypeScript和ES6类完美共存),只转换那些不需要使用元属性的类。

这只是代码的一部分,我不在这里发布。我将整个JavaScript代码写入了Typescript代码。JavaScript它使用get函数等。但在TypeScript中,它无法访问getcssClass。对您的问题的简短回答可能是:您需要在get/set和属性名称之间添加一个空格,并且不能有相同名称的字段和属性。这只是代码的一部分,我不会在这里发布。我将整个JavaScript代码写入了Typescript代码。JavaScript它使用get函数等。但在TypeScript中,它无法访问getcssClass。您的问题的简短答案可能是:您需要在get/set和属性名称之间添加一个空格,并且不能有相同名称的字段和属性。