如何为函数定义 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
How can I define a Typescript object return value for a function?
提问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; 上:数字;}'。