在打字稿中声明“返回类型”的简写

时间:2016-01-22 18:29:41

标签: typescript

我正在关注Typescript handbook以了解课程。

以下是其中一个例子:

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

var greeter: Greeter; // return type: Greeter
greeter = new Greeter("world"); // implement greeter variable
alert(greeter.greet());

在打字稿中:

var greeter; // return type: any
var greeter: Greeter; // return type: Greeter (implicit convertion `any` to `Greeter`)

所以,我的问题是:如果我们确切知道返回类型,为什么我们不能使用Greeter代替var关键字?

我想归档的内容:

Greeter greeter = new Greeter("world"); // same to: var greeter = new Greeter("world");

3 个答案:

答案 0 :(得分:5)

这样做是为了与javascript保持一致。 类型定义可以省略,TypeScript会自动推断变量的类型。

var greeter : Greeter = new Greeter();

相同
var greeter = new Greeter();

这稍微不同点,但您也可以声明一个可以容纳多种类型的变量。 例如

var a : Greeter | number

将持有Greeter或数字。在我看来,变量名后面的类型定义更优雅。

答案 1 :(得分:2)

比这更简单。你实际上可以做到

var greeter = new Greeter("world");

编译器非常聪明,可以从那里推断出类型。

编辑:对不起。我误解了这个问题,好像你不知道这个语法。提到的其他答案主要是你想要的。那就是:

var greeter: Greeter = new Greeter("world");

由于我们在讨论不同的语言,因此您无法使用Java方式。你不应该花太多时间习惯它。这是一件非常小的事情。

答案 2 :(得分:2)

您想要实现的目标是不可能的,因为它不是TypeScript语法。

如果要指定变量的类型,可以这样做:

var greeter: Greeter = new Greeter("world");

Java和C#有很多相似之处,但TypeScript中的类型系统在语法方面有所不同。