আমি টাইপস্ক্রিপ্টের জন্য গুগল ম্যাপস এপিআইয়ের একটি সংজ্ঞা ফাইলে কাজ করছি।
এবং আমি যেমন একটি এনাম যেমন টাইপ যেমন সংজ্ঞায়িত করা প্রয়োজন। google.maps.Animation
যার দুটি বৈশিষ্ট্য রয়েছে: BOUNCE
এবং DROP
।
এটি কীভাবে টাইপস্ক্রিপ্টে করা উচিত?
আমি টাইপস্ক্রিপ্টের জন্য গুগল ম্যাপস এপিআইয়ের একটি সংজ্ঞা ফাইলে কাজ করছি।
এবং আমি যেমন একটি এনাম যেমন টাইপ যেমন সংজ্ঞায়িত করা প্রয়োজন। google.maps.Animation
যার দুটি বৈশিষ্ট্য রয়েছে: BOUNCE
এবং DROP
।
এটি কীভাবে টাইপস্ক্রিপ্টে করা উচিত?
উত্তর:
টাইপস্ক্রিপ্ট 0.9+ এর এনামগুলির জন্য একটি স্পেসিফিকেশন রয়েছে:
enum AnimationType {
BOUNCE,
DROP,
}
চূড়ান্ত কমা optionচ্ছিক।
enum
এই পর্যায়ে কনস্ট্রাক্টটি ব্যবহারের বিরুদ্ধে পরামর্শ দেব কারণ টাইপস্ক্রিপ্ট দলটি এটি পরিবর্তন করতে চলেছে তা বেশ পরিষ্কার করে দিয়েছে - তাই এটি ভেঙে যাবে।
টাইপস্ক্রিপ্ট ০.৯ অনুসারে (বর্তমানে একটি আলফা রিলিজ) আপনি এনাম সংজ্ঞাটি ব্যবহার করতে পারেন:
enum TShirtSize {
Small,
Medium,
Large
}
var mySize = TShirtSize.Large;
ডিফল্টরূপে, এই গণনাগুলি যথাক্রমে 0, 1 এবং 2 নির্ধারিত হবে। আপনি যদি এই সংখ্যাগুলি স্পষ্টভাবে সেট করতে চান তবে আপনি এনাম ঘোষণার অংশ হিসাবে এটি করতে পারেন।
সুস্পষ্ট সদস্যদের সাথে 6.2 গণনা তালিকাবদ্ধ করা
enum TShirtSize {
Small = 3,
Medium = 5,
Large = 8
}
var mySize = TShirtSize.Large;
এই দুটি উদাহরণই জাভাস্ক্রিপ্ট প্রোগ্রামারদের জন্য টাইপস্ক্রিপ্টের বাইরে সরাসরি তুলে নিয়েছে ।
নোট করুন যে এটি 0.8 নির্দিষ্টকরণের থেকে পৃথক। ০.৮ স্পেসিফিকেশনটি এর মতো দেখায় - তবে এটি পরীক্ষামূলক হিসাবে চিহ্নিত হয়েছে এবং সম্ভবত এটি পরিবর্তিত হতে পারে, সুতরাং আপনাকে কোনও পুরানো কোড আপডেট করতে হবে:
দাবি অস্বীকার - এই 0.8 উদাহরণটি টাইপস্ক্রিপ্ট সংকলকটির নতুন সংস্করণগুলিতে নষ্ট হবে।
enum TShirtSize {
Small: 3,
Medium: 5,
Large: 8
}
var mySize = TShirtSize.Large;
এটি এখন ভাষার অংশ। এটিতে নথিপত্রের জন্য টাইপস্ক্রিপ্টল্যাং.অর্গআ> বেসিক প্রকারগুলি> এনম দেখুন । এই এনামগুলিকে কীভাবে ব্যবহার করবেন সে সম্পর্কে ডকুমেন্টেশনের একটি অংশ:
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();
কেবলমাত্র অন্য একটি নোট যা আপনি নীচের সাথে একটি আইডি / স্ট্রিং এনাম করতে পারেন:
class EnumyObjects{
public static BOUNCE={str:"Bounce",id:1};
public static DROP={str:"Drop",id:2};
public static FALL={str:"Fall",id:3};
}
str
এবং এটি id
ব্যবহার করে?
abstract class
যেহেতু টাইপ করা বিষয় একটি একটি ধারণা নেই আরো ইনস্ট্যান্স প্রতিরোধ উপযুক্ত হতে static class
?
আপডেট :
@ আইএক্স 3 দ্বারা উল্লিখিত হিসাবে, টাইপসক্রিপ্ট 2.4 এ এনাম স্ট্রিংগুলির সমর্থন করে।
দেখুন: টাইপস্ক্রিপ্টে স্ট্রিং মান সহ একটি এনাম তৈরি করুন
আসল উত্তর:
স্ট্রিং সদস্যের মানগুলির জন্য, টাইপসক্রিপ্ট কেবল এনাম সদস্যের মান হিসাবে সংখ্যাকে মঞ্জুরি দেয়। তবে কয়েকটি সমাধান / হ্যাক আপনি প্রয়োগ করতে পারেন;
সমাধান 1:
থেকে অনুলিপি করা হয়েছে: https://blog.rsuter.com/how-to-implement-an-enum-with-string-values-in-tyypecript/
একটি সহজ সমাধান রয়েছে: নির্ধারণের আগে যে কোনওটির কাছে কেবল স্ট্রিংকে আক্ষরিক কাস্ট করুন:
export enum Language {
English = <any>"English",
German = <any>"German",
French = <any>"French",
Italian = <any>"Italian"
}
সমাধান 2:
থেকে অনুলিপি করা হয়েছে: https://basarat.gitbooks.io/tyypecript/content/docs/tyype/literal-tyype.html
আপনি টাইপ হিসাবে একটি স্ট্রিং আক্ষরিক ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:
let foo: 'Hello';
এখানে আমরা foo নামক একটি ভেরিয়েবল তৈরি করেছি যা কেবলমাত্র 'হ্যালো' এর জন্য আক্ষরিক মান নির্ধারণ করতে দেয়। এটি নীচে প্রদর্শিত হয়:
let foo: 'Hello';
foo = 'Bar'; // Error: "Bar" is not assignable to type "Hello"
এগুলি তাদের নিজস্বভাবে খুব কার্যকর নয় তবে একটি শক্তিশালী (এবং দরকারী) বিমূর্ততা তৈরি করতে টাইপ ইউনিয়নে মিশ্রিত করা যেতে পারে যেমন:
type CardinalDirection =
"North"
| "East"
| "South"
| "West";
function move(distance: number, direction: CardinalDirection) {
// ...
}
move(1,"North"); // Okay
move(1,"Nurth"); // Error!
এনামগুলিকে নামকরণকৃত ধ্রুবকগুলির একটি সেট সংজ্ঞায়িত করতে টাইপস্ক্রিপ্ট ভাষায় রাখা হয়। এনাম ব্যবহার করা আমাদের জীবনকে আরও সহজ করে তুলতে পারে। এর কারণ হ'ল এনামগুলি প্রতিনিধিত্ব করে এমন মানের চেয়ে এই ধ্রুবকগুলি প্রায়শই পড়া সহজ হয়।
enum Direction {
Up = 1,
Down,
Left,
Right,
}
টাইপস্ক্রিপ্ট ডক্সের এই উদাহরণটি এনামগুলি কীভাবে কাজ করে তা খুব সুন্দরভাবে ব্যাখ্যা করে। লক্ষ্য করুন যে আমাদের প্রথম এনাম মান (উপরে) 1 দিয়ে সূচনা হয়েছে en এনামের নীচের সমস্ত সদস্যের পরে এই মানটি (যেমন ডাউন = 2, বাম = 3, ডান = 4) থেকে স্বয়ংক্রিয়ভাবে বর্ধিত হবে । যদি আমরা 1 দিয়ে প্রথম মানটি আরম্ভ না করি তবে এনাম 0 থেকে শুরু হবে এবং তারপরে অটো ইনক্রিমেন্ট (যেমন ডাউন = 1, বাম = 2, ডান = 3)।
আমরা নিম্নলিখিত পদ্ধতিতে এনামের মানগুলি অ্যাক্সেস করতে পারি:
Direction.Up; // first the enum name, then the dot operator followed by the enum value
Direction.Down;
লক্ষ্য করুন যে এইভাবে আমরা আমাদের কোডটি লেখার ক্ষেত্রে আরও অনেক বর্ণনামূলক । এনামগণ মূলত আমাদের যাদু সংখ্যার ব্যবহার থেকে বিরত রাখেন (নম্বরগুলি যা কিছু সত্তার প্রতিনিধিত্ব করে কারণ প্রোগ্রামার একটি নির্দিষ্ট প্রসঙ্গে তাদের একটি অর্থ দিয়েছে)। নিম্নলিখিত কারণগুলির কারণে ম্যাজিক নম্বরগুলি খারাপ: