ES6和Typescript,没有构造函数的类函数属性

时间:2015-09-12 11:02:23

标签: typescript ecmascript-6

这是正确的Typescript(如果忽略静态类型,则为ES6):

class Greeter {
    greeting: string;
    constructor(message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}

var greeter = new Greeter("world");

console.log( greeter.greet() ); //Hello world

但是下面创建了Hello undefined,你会如何以一种可行的方式重写它?并且,如果这不可能,那么实现这一目标的替代方案是什么?

我正在考虑将变量直接传递给函数。

class Greeter {
    greet(greeting: string) {
        return "Hello, " + this.greeting;
    }
}

var greeter = new Greeter();

console.log( greeter.greet("world") ); //Hello undefined

更新

我指的是像类使用的PHP,如:

class Greeter {
    public function greet($greeting){
        return $greeting;
    }
}

1 个答案:

答案 0 :(得分:3)

您可以在执行呼叫时将变量传递到要存储的对象中。你可以像之后一样使用它而不传递变量。然后你可以通过另一个电话改变它。

class Greeter {
    greet(greeting: string) {
      this.greeting = greeting || this.greeting;
      return "Hello, " + this.greeting;
    }
}

var greeter = new Greeter();

console.log( greeter.greet("world") ); //Hello world
console.log( greeter.greet() ); //Hello world
console.log( greeter.greet("es6") ); //Hello es6