假设我在Typescript 2.0中有以下功能:
doSomething(): any {
const apple: Apple = ...
const pears: Pear[] = ...
return {
apple: apple,
pears: pears
}
}
我知道我的函数将始终返回一个apple
属性为Apple
且pear
属性为Pear[]
的对象。
我并不特别想创建一个新类来对此进行建模。无论如何将我的返回类型从any
更改为更有意义的内容?
答案 0 :(得分:4)
您可以使用内联界面:
doSomething(): {apple: Apple, pears: Pear[]} {
const apple: Apple = ...
const pears: Pear[] = ...
return {
apple: apple,
pears: pears
}
}
答案 1 :(得分:4)
我知道已有一个已接受的答案,答案确实可以为您提供所需的结果......但它可以为您做更多的工作。
我希望你早点去酒吧,所以我的答案就是这个......
像这样:
doSomething() {
请注意,您所要做的就是删除类型注释。
下面是一个完整的工作示例。将鼠标悬停在编辑器中的result
上,您将看到编译器已经知道返回类型,而无需全部输入。
class Apple {
appleThing: string;
}
class Pear {
pearThing: string;
}
function doSomething() {
const apple: Apple = new Apple();
const pears: Pear[] = [new Pear()];
return {
apple: apple,
pears: pears
}
}
var result = doSomething();
答案 2 :(得分:2)
除了@toskv回答之外,您还可以使用类型
type Fruits = { apple: Apple, pears: Pear[] }
doSomething(): Fruits {
const apple: Apple = ...
const pears: Pear[] = ...
return {
apple: apple,
pears: pears
}
}
我有意义定义一个类型,因为在定义最终将调用该函数的变量时,您可能会重用它:let fruits: Fruits; ...; fruits = doSomething()