كيف يمكنني تعريف قيمة إرجاع كائن في TypeScript لدالة؟
تبدو الدالة الخاصة بي هكذا:
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
};
};
أنا ملم بإرجاع السلاسل والأرقام، لكن كيف يمكنني تحديد أن القيمة المرجعة هي كائن يحتوي على معاملين: lower و upper؟
الإجابة رقم 1
parseRange = (text: string) : { lower: number; upper: number; } => {
// ...
return {
lower: lower,
upper: upper
};
};
أو
parseRange = <(text: string) : { lower: number; upper: number; }> ((text) => {
// ...
return {
lower: lower,
upper: upper
};
});
أو
var parseRange : (text: string) => { lower: number; upper: number; } = (text) => {
// ...
return {
lower: lower,
upper: upper
};
};
أو
parseRange = function (text: string) : { lower: number; upper: number; } {
// ...
return {
lower: lower,
upper: upper
};
};
أو
function parseRange(text: string) : { lower: number; upper: number; } {
// ...
return {
lower: lower,
upper: upper
};
};
أو
interface RangeResult {
lower: number;
upper: number;
}
function parseRange(text: string) : RangeResult {
// ...
return {
lower: lower,
upper: upper
};
};
الإجابة رقم 2
يستنتج TypeScript أنواع إرجاع الدوال، لذلك يؤدي هذا إلى خطأ أثناء الترجمة دون الحاجة لتحديد الأنواع صراحةً:
var parseRange = (text) => {
return {
lower: 5,
upper: 6
};
};
var range = parseRange("");
range.foo; // compile error
مثال حي يوضح الخطأ:
الخاصية 'foo' غير موجودة على القيمة من النوع '{ lower: number; upper: number; }'.
