هل يمكن توضيح معلمة في 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 على أي حال.