将JavaScript迁移到TypeScript
我正在尝试将以下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
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和属性名称之间添加一个空格,并且不能有相同名称的字段和属性。