ما الفرق بين الأقواس الزاوية و"as" في تايب سكريبت 2؟
ما الفرق بين استخدام as أو <> في الكود أدناه؟
الخيار أ - استخدم 'as' لقيمة الإرجاع
convertResultToParams(columnView:IColumnViewResult):IColumnViewParams {
const params = {};
Object.keys(this.getDefaultParams())
.map(key => params[key] = columnView[key]);
return params as IColumnViewParams;
}
الخيار ب - استخدم 'أقواس' لقيمة الإرجاع
convertResultToParams(columnView:IColumnViewResult):IColumnViewParams {
const params = {};
Object.keys(this.getDefaultParams())
.map(key => params[key] = columnView[key]);
return <IColumnViewParams>params;
}
ولماذا لا يمكنني ببساطة إعلان النوع في إعلان المتغير؟
الإجابة رقم 1
من المحتمل أن يحتوي واجهتك على أعضاء مطلوبة، لذا فإن التهيئة باستخدام {} غير صالحة. يمكنك تحويل {} إلى نوع الواجهة إذا كنت تقوم بتهيئته في ذلك الحين، وسوف تضيف الحقول قريبًا.
const params = {} as IColumnViewParams
في البداية، كان TypeScript يستخدم <> للتحويل، ولكن مع إضافة دعم jsx أصبح هذا مشكلة، لذلك تمت إضافة عامل التحويل as. لا يوجد فرق في التحويل، فقط في السياق الذي يمكنك استخدامهم فيه. يمكن استخدام as في أي مكان، أما <> فلا يمكن استخدامه في tsx
