How to determine the return value of a Typescript object for a function?

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 return strings and numbers, but how can I indicate that return is an object with a lower and upper parameter?

+5
source share
2 answers
 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 }; }; 
+18
source

TypeScript prints the types of the returned functions , so this leads to a compilation error without explicitly specifying types:

 var parseRange = (text) => { return { lower: 5, upper: 6 }; }; var range = parseRange(""); range.foo; // compile error 

Live example that shows an error:

The 'foo' property does not exist with a value of the type '{lower: number; upper: number; } ".

+4
source

Source: https://habr.com/ru/post/1202053/


All Articles