كيفية إنشاء التعداد مثل نوع في تيبسكريبت?

StackOverflow https://stackoverflow.com//questions/12687793

  •  12-12-2019
  •  | 
  •  

سؤال

أنا أعمل على ملف تعريفات ل أبي خرائط جوجل ل تيبسكريبت.

وأنا بحاجة إلى تحديد التعداد مثل نوع على سبيل المثال. google.maps.Animation الذي يحتوي على خاصيتين: BOUNCE و DROP.

كيف ينبغي أن يتم ذلك في تيبسكريبت?

هل كانت مفيدة؟

المحلول

didescript 0.9+ لديه مواصفات العادة: giveacodicetagpre.

الفاصلة النهائية اختيارية.

نصائح أخرى

اعتبارا من bydingcript 0.9 (حاليا إصدار ألفا)، يمكنك استخدام تعريف Enum مثل هذا: giveacodicetagpre.

بشكل افتراضي، سيتم تعيين هذه التعدادات 0 و 1 و 2 على التوالي.إذا كنت ترغب في تعيين هذه الأرقام بشكل صريح، فيمكنك القيام بذلك كجزء من إعلان Enum.

إدراج 6.2 عدسة مع أعضاء صريح giveacodicetagpre.

كل من هذه الأمثلة مرفو مباشرة من cubditcript لمبرمجي JavaScript .

note أن هذا يختلف عن المواصفات 0.8. بدا المواصفات 0.8 مثل هذا - ولكن تم وضع علامة على أنه تجريبي ومن المحتمل أن يتغير، لذلك عليك تحديث أي رمز قديم:

إخلاء المسئولية - سيتم كسر هذا المثال 0.8 في الإصدارات الأحدث من برنامج التحويل البرمجي المحيطي. giveacodicetagpre.

هذا هو الآن جزء من اللغة.انظر TypeScriptLang.org > أنواع أساسية > التعداد للحصول على وثائق حول هذا الموضوع.مقتطف من الوثائق حول كيفية استخدام هذه التعدادات:

enum Color {Red, Green, Blue};
var c: Color = Color.Green;

أو مع أرقام الدعم اليدوي:

enum Color {Red = 1, Green = 2, Blue = 4};
var c: Color = Color.Green;

يمكنك أيضا العودة إلى اسم التعداد باستخدام على سبيل المثال Color[2].

إليك مثال على كيفية سير كل هذا معا:

module myModule {
    export enum Color {Red, Green, Blue};

    export class MyClass {
        myColor: Color;

        constructor() {
            console.log(this.myColor);
            this.myColor = Color.Blue;
            console.log(this.myColor);
            console.log(Color[this.myColor]);
        }
    }
}

var foo = new myModule.MyClass();

هذا سوف يسجل:

undefined  
2  
Blue

لأنه ، في وقت كتابة هذا ، فإن ملعب تيبسكريبت توليد هذا الرمز:

var myModule;
(function (myModule) {
    (function (Color) {
        Color[Color["Red"] = 0] = "Red";
        Color[Color["Green"] = 1] = "Green";
        Color[Color["Blue"] = 2] = "Blue";
    })(myModule.Color || (myModule.Color = {}));
    var Color = myModule.Color;
    ;
    var MyClass = (function () {
        function MyClass() {
            console.log(this.myColor);
            this.myColor = Color.Blue;
            console.log(this.myColor);
            console.log(Color[this.myColor]);
        }
        return MyClass;
    })();
    myModule.MyClass = MyClass;
})(myModule || (myModule = {}));
var foo = new myModule.MyClass();

مجرد ملاحظة أخرى يمكنك أن تقوم معرف / سلسلة Enum مع ما يلي: giveacodicetagpre.

تحديث :

كما هو مذكور بواسطة @ ix3، cypedcript 2.4 لديه دعم لسلاسل المعهد.

شاهد: إنشاء Enum مع قيم السلسلة في أنفسريبت


الإجابة الأصلية:

للحصول على القيم الأعضاء السلسلة، يتيح CUBLESCRIPT فقط الأرقام كما قيم الأعضاء. ولكن هناك عدد قليل من الحلول / الخارقة التي يمكنك تنفيذها؛

الحل 1:

نسخ من: https://blog.rsuter.com/how-to-Implement-an-enum-with-String-Values-in-Typescript/

هناك حل بسيط: فقط يلقي السلسلة الحرفية إلى أي قبل تعيين: giveacodicetagpre.

الحل 2:

نسخ من: https://basarat.gitbooks.io /typescript/content/docs/types/literal-types.html

يمكنك استخدام سلسلة حرفية كنوع. على سبيل المثال: giveacodicetagpre.

هنا قد أنشأنا متغيرا يسمى FOO الذي سيسمح فقط بالقيمة الحرفية "مرحبا" ليتم تعيينه إليه. يتم إظهار ذلك أدناه: giveacodicetagpre.

فهي ليست مفيدة للغاية من تلقاء نفسها ولكن يمكن دمجها في نقابة من النوع لإنشاء تجريد قوي (ومفيد) E.G.: giveacodicetagpre.

Enums في نسخة مطبوعة على الآلة الكاتبة:

Enums وضعت نسخة مطبوعة على الآلة الكاتبة اللغة إلى تحديد مجموعة من اسمه الثوابت.باستخدام enums يمكن أن تجعل حياتنا أسهل.والسبب في ذلك هو أن هذه الثوابت غالبا ما تكون أسهل في القراءة من القيمة التي التعداد يمثل.

خلق التعداد:

enum Direction {
    Up = 1,
    Down,
    Left,
    Right,
}

هذا المثال من نسخة مطبوعة على الآلة الكاتبة مستندات توضح بشكل جيد جدا كيف enums العمل.لاحظ أن أول تعداد قيمة (حتى) مع تهيئة 1.جميع الأعضاء التالية أسماؤهم من عدد التعداد ثم السيارات زيادة من هذه القيمة (أيأسفل = 2, يسار = 3, صحيح = 4).إذا لم يكن تهيئة القيمة الأولى مع 1 التعداد سيبدأ في 0 ثم السيارات زيادة (أيأسفل = 1, يسار = 2, يمين = 3).

باستخدام enum:

يمكننا الوصول إلى قيم التعداد على النحو التالي:

Direction.Up;     // first the enum name, then the dot operator followed by the enum value
Direction.Down;

لاحظ أن هذه الطريقة هي أكثر من ذلك بكثير وصفي في طريقة كتابة الأكواد.Enums أساسا منع الولايات المتحدة من استخدام الأرقام السحرية (الأرقام التي تمثل بعض الكيان لأن مبرمج أعطت معنى لها في سياق معين).الأرقام السحرية سيئة بسبب من الأسباب التالية:

  1. نحن بحاجة إلى التفكير أكثر صعوبة ، نحتاج أولا إلى ترجمة رقم كيان قبل أن نتمكن من السبب عن رمز.
  2. إذا كنا مراجعة التعليمات البرمجية بعد فترة طويلة ، أو غيرها من المبرمجين مراجعة القانون ، وهم لا يعرفون بالضرورة ما هو المقصود مع هذه الأرقام.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top