هل يمكن توضيح معلمة في TypeScript كـ const؟
إذا لم أرغب في أن تتغير قيمة معامل داخل نطاق دالة، هل هناك أي طريقة لتوضيح ذلك باستخدام تايب سكريبت؟
لقد جربت:
function walk(const fileName: string): string[] {
// -----------^
}
لكنها لا تعمل.
الإجابة رقم 1
يمكن تحقيق ذلك باستخدام قيد معلمة النوع const من TypeScript الإصدار 5.0.
function walk<const T extends string>(fileName: T): string {
// TS is upset here because we're attempting to modify a constant
fileName = 'my new value';
// TS knows you're returning a string here
return fileName;
}
انظر: https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-0.html#const-type-parameters
ملاحظة: يمكنك من الناحية التقنية القيام بـ fileName=fileName; و TypeScript سيقوم بالترجمة - هذا سلوك مختلف قليلاً عن إعلان متغير const الذي يُعامل كـ readonly.
الإجابة رقم 2
لا توجد طريقة للقيام بذلك الآن، وقد لا تكون ممكنة، حيث أنه ليس ممكنًا أيضًا في ES6:
كيفية جعل متغير الدالة ثابتًا في جافاسكريبت؟
هذه الطريقة البديلة لا تعمل مع TypeScript على أي حال.
