2014-09-08 11 views
5

Moja funkcja wygląda tak:Jak zdefiniować wartość zwracaną przez obiekt skryptowy dla funkcji?

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 
    }; 
}; 

znam powrocie sznurki i cyfr, ale w jaki sposób mogę określić zwrot jest obiektem z dolnym i górnym parametru?

Odpowiedz

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

lub

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

lub

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

lub

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

lub

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

lub

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

który obejmuje prawie każda metoda określania tego typu zwrotu! Bardzo kompleksowy. – Fenton

+0

Dziękuję bardzo! – Alan2

4

maszynopis infers function return types, więc to powoduje błąd kompilacji bez konieczności określić typy wyraźnie:

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

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

Live example który pokazuje błąd:

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

Powiązane problemy