如何为函数定义 Typescript 对象返回值?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25719834/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-09 06:31:30  来源:igfitidea点击:

How can I define a Typescript object return value for a function?

typescript

提问by Alan2

My function looks like this:

我的函数如下所示:

parseRange = (text) => {
    var arr = [];
    var lower = null;
    var upper = null;
    if (!text || text === "") {
        lower = null;
        upper = null;
    }
    else if (text.indexOf("-") > 0) {
        arr = text.split("-");
        lower = +arr[0];
        upper = +arr[1];
    }
    else {
        lower = +text;
        upper = null;
    }
    return {
        lower: lower,
        upper: upper
    };
};

I am familiar with returning strings and numbers but how can I specify the return is an object with a lower and upper parameter?

我熟悉返回字符串和数字,但如何指定返回是具有下限和上限参数的对象?

回答by Markus Jarderot

parseRange = (text: string) : { lower: number; upper: number; } => {
    // ...
    return {
        lower: lower,
        upper: upper
    };
};

or

或者

parseRange = <(text: string) : { lower: number; upper: number; }> ((text) => {
    // ...
    return {
        lower: lower,
        upper: upper
    };
});

or

或者

var parseRange : (text: string) => { lower: number; upper: number; } = (text) => {
    // ...
    return {
        lower: lower,
        upper: upper
    };
};

or

或者

parseRange = function (text: string) : { lower: number; upper: number; } {
    // ...
    return {
        lower: lower,
        upper: upper
    };
};

or

或者

function parseRange(text: string) : { lower: number; upper: number; } {
    // ...
    return {
        lower: lower,
        upper: upper
    };
};

or

或者

interface RangeResult {
    lower: number;
    upper: number;
}
function parseRange(text: string) : RangeResult {
    // ...
    return {
        lower: lower,
        upper: upper
    };
};

回答by Douglas

TypeScript infers function return types, so this results in a compile error without having to specify the types explicitly:

TypeScript推断函数返回类型,因此这会导致编译错误,而无需显式指定类型:

var parseRange = (text) => {
    return {
        lower: 5,
        upper: 6
    };
};

var range = parseRange("");
range.foo; // compile error

Live examplewhich shows the error:

显示错误的实时示例

The property 'foo' does not exist on value of type '{ lower: number; upper: number; }'.

属性 'foo' 不存在于类型 '{lower: number; 上:数字;}'。