adcript返回值的Typescript返回类型

时间:2016-09-16 14:22:12

标签: typescript typescript2.0

假设我在Typescript 2.0中有以下功能:

doSomething(): any {

    const apple: Apple = ...
    const pears: Pear[] = ...

    return {
        apple: apple,
        pears: pears
    }
}

我知道我的函数将始终返回一个apple属性为Applepear属性为Pear[]的对象。

我并不特别想创建一个新类来对此进行建模。无论如何将我的返回类型从any更改为更有意义的内容?

3 个答案:

答案 0 :(得分:4)

您可以使用内联界面:

doSomething(): {apple: Apple, pears: Pear[]} {

    const apple: Apple = ...
    const pears: Pear[] = ...

    return {
        apple: apple,
        pears: pears
    }
}

答案 1 :(得分:4)

我知道已有一个已接受的答案,答案确实可以为您提供所需的结果......但它可以为您做更多的工作。

我希望你早点去酒吧,所以我的答案就是这个......

  

Embrace type inference

像这样:

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()

playground