如何在TypeScript中声明函数的返回types
我在这里检查http://go.microsoft.com/fwlink/?LinkId=267238这是TypeScript语言规范,但我看不到一件事情,我怎么可以声明函数的返回types。 我在下面的代码中展示了我期待的内容: greet(name:string) :string {}
class Greeter { greeting: string; constructor (message: string) { this.greeting = message; } greet() : string{ return "Hello, " + this.greeting; } }
我看到我们可以使用(name:string) => any
但是在传递callback函数的时候主要用到:
function vote(candidate: string, callback: (result: string) => any) { // ... }
你是正确的 – 这里是一个完整的工作示例 – 你会看到var result
隐式地是一个string,因为在greet()
函数中指定了返回types。 改变types为number
,你会得到警告。
class Greeter { greeting: string; constructor (message: string) { this.greeting = message; } greet() : string { return "Hello, " + this.greeting; } } var greeter = new Greeter("Hi"); var result = greeter.greet();
这里是数字的例子 – 如果你尝试这样的话,你会在操场编辑器中看到红色的波形:
greet() : number { return "Hello, " + this.greeting; }
您可以在3.5.3.5节和3.5.5节阅读关于函数types的更多信息。
TypeScript编译器会在可以的时候推断出types,这样做你不需要指定显式types。 所以对于迎接的例子,greet()返回一个string文字,它告诉编译器该函数的types是一个string,并且不需要指定一个types。 所以例如在这个示例中,我有迎接方法的迎宾方法返回一个string和一个variables分配给数字文字。 编译器将推断这两种types,如果您尝试将一个string分配给一个数字,您将得到一个错误。
class Greeter { greet() { return "Hello, "; // type infered to be string } } var x = 0; // type infered to be number // now if you try to do this, you will get an error for incompatable types x = new Greeter().greet();
同样,这个示例会导致一个错误,因为编译器给出的信息无法决定types,这将是一个必须具有显式返回types的地方。
function foo(){ if (true) return "string"; else return 0; }
然而,这将工作:
function foo() : any{ if (true) return "string"; else return 0; }