我正在关注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");
答案 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中的类型系统在语法方面有所不同。