Reputation: 24572
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?
Upvotes: 50
Views: 119882
Reputation: 37761
TypeScript infers function return types, so this results in a compile error without having to specify the types explicitly:
var parseRange = (text) => {
return {
lower: 5,
upper: 6
};
};
var range = parseRange("");
range.foo; // compile error
Live example which shows the error:
The property 'foo' does not exist on value of type '{ lower: number; upper: number; }'.
Upvotes: 8
Reputation: 89171
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
};
};
Upvotes: 132