我在这里检查了https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md,这是TypeScript Language Specifications,但我找不到如何声明函数的返回类型。
我在下面的代码中展示了我所期望的内容:第一个月
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet(): string {
return "Hello, " + this.greeting;
}
}
我知道我可以使用(name:string) => any
,但这主要用于传递回调函数:
function vote(candidate: string, callback: (result: string) => any) {
// ...
}
8条答案
按热度按时间rnmwe5a21#
三硝基甲苯;
4ktjp1zp2#
这是一个简单的例子,你可以用任何类型来代替数字,或者你甚至可以在联合类型的帮助下为输入和输出使用多个类型,例如:
输入值可以是字符串或数字。
输出值可以是字符串或数字。
vjhs03f73#
函数表达式返回类型的示例为:
泛型类型函数表达式
kupeojn64#
你是对的--这里是一个完整的例子--你会看到
var result
隐式地是一个字符串,因为返回类型是在greet()
函数中指定的,如果将类型更改为number
,你会得到警告。下面是一个数字示例--如果你尝试这样做,你会在playground编辑器中看到红色的波浪线:
kq0g1dla5#
使用箭头符号的返回类型与前面的答案相同:
zdwk9cvp6#
oxosxuxt7#
您可以在www.example.com和3.5.5节中阅读更多关于language specification中函数类型的信息3.5.3.5。
TypeScript编译器将在可能的情况下推断类型,这样您就不需要指定显式类型。因此对于greeter示例,greet()返回一个字符串常量,它告诉编译器函数的类型是一个字符串,不需要指定类型。例如,在这个示例中,我有一个greeter类,它带有一个返回字符串的greet方法,和一个赋给数字文字的变量。编译器将推断这两种类型,如果你试图将字符串赋给数字,你将得到一个错误。
类似地,这个示例将导致错误,因为编译器在给定信息的情况下无法确定类型,这将是一个必须具有显式返回类型的地方。
然而,这是可行的:
csbfibhn8#
用于多个函数的外部返回类型声明: