টাইপস্ক্রিপ্টে একাধিক প্রকারের সাথে অ্যারের সংজ্ঞা দেওয়া হচ্ছে


185

আমি ফর্মের একটি অ্যারের আছে: [ 1, "message" ]।

আমি টাইপস্ক্রিপ্ট এ কীভাবে সংজ্ঞায়িত করব?


এই এক, কোন উত্তর সঙ্গে অনুরূপ প্রশ্ন, কিন্তু এই সময় আইটেম অজানা নম্বর দিয়ে বর্গ উত্তরাধিকার ব্যবহার করে এবং একই শ্রেণীতে সব ব্যাপ্ত: stackoverflow.com/questions/50322488/...
— cancerbero

উত্তর:


313

টাইপস্ক্রিপ্টে একাধিক প্রকারের সাথে অ্যারের সংজ্ঞা দেওয়া হচ্ছে

ইউনিয়নের ধরণের (string|number)[]ডেমো ব্যবহার করুন :

const foo: (string|number)[] = [ 1, "message" ];

আমার কাছে ফর্মের একটি অ্যারে রয়েছে: [1, "বার্তা"]।

আপনি যদি নিশ্চিত হন যে সর্বদা দুটি মাত্র উপাদান থাকে [number, string]তবে আপনি এটি টিপল হিসাবে ঘোষণা করতে পারেন:

const foo: [number, string] = [ 1, "message" ];

2
কেবল একটি নোট যে এর জন্য টিএস ভি 1.4 +
— ব্রোকো

6
... এবং এটি বিভিন্ন ধরণের জটিল জটিল ধরণের সাথে কাজ করবে না, যখন আপনি কেবল কোনও একটিতে উপলব্ধ কোনও সম্পত্তি অ্যাক্সেস করতে চান।
— নাদাইন

1
@ নাদাইন এবং সেক্ষেত্রে কেউ কী করতে পারে?
— মিসানফোর্ড

4
প্রতিবার আপনি কোন ধরণের তা সম্পর্কে পরিষ্কার হয়ে গেলে আপনি কোনও প্রকারের দৃser়তা করতে পারেন। তারপরে এটি বৈশিষ্ট্য অ্যাক্সেস করতে কাজ করবে।
— নাদাইন

78

আপনি যদি এটিকে টিউপল হিসাবে বিবেচনা করে থাকেন ( ভাষা অনুচ্ছেদের ৩.৩.৩ বিভাগ দেখুন ), তাহলে:

var t:[number, string] = [1, "message"]

অথবা

interface NumberStringTuple extends Array<string|number>{0:number; 1:string}
var t:NumberStringTuple = [1, "message"];

10
টিপ: আমি পছন্দ করবtype NumberStringTuple = [number, string]
— বাসরাত

1
ধন্যবাদ! আমি সম্পূর্ণরূপে এটি খুঁজছিলাম:const W3COLORS: [[string, string, number, number]] = [ ["aliceblue", "#f0f8ff", 240, 248, 255], ... ];
— কোডারপি

1
দ্রষ্টব্য - উভয় প্রকারের অ্যারেতে থাকা আবশ্যক (খালি অ্যারের পাশাপাশি কাজ করে না)। গৃহীত উত্তরটি আরও বহুমুখী এবং যা আমি ব্যক্তিগতভাবে সর্বদা ব্যবহার করি তবে এটি প্রয়োজনীয়তার উপর নির্ভর করে।
— ড্রুভিস কুকুরস

27

আমার টিএস লিঙ্কটি অন্যান্য সমাধান সম্পর্কে অভিযোগ করছিল, সুতরাং যে সমাধানটি আমার পক্ষে কাজ করছিল তা হ'ল:

item: Array<Type1 | Type2>

যদি শুধুমাত্র একটি প্রকার থাকে তবে এটি ব্যবহার করা ভাল:

item: Type1[]

এটি দুর্দান্ত, তবে বলুন আমরা এখন অ্যারের উপরে লুপ করছি, বর্তমান অ্যারেটি কোন প্রকারের তা আমরা কীভাবে আবিষ্কার করব?
— তুমিলিহা


12

অ্যারে টাইপ করার জন্য আমি নিম্নলিখিত ফর্ম্যাটটিতে স্থির করেছি যাতে একাধিক ধরণের আইটেম থাকতে পারে।

Array<ItemType1 | ItemType2 | ItemType3>

এটি টেস্টিং এবং টাইপ গার্ডদের সাথে ভাল কাজ করে। https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types

এই ফর্ম্যাটটি পরীক্ষার বা প্রহরী রক্ষীদের সাথে ভাল কাজ করে না:

(ItemType1 | ItemType2 | ItemType3)[]


4

আমি এই সংস্করণটি ব্যবহার করছি:

exampleArr: Array<{ id: number, msg: string}> = [
   { id: 1, msg: 'message'},
   { id: 2, msg: 'message2'}
 ]

এটি অন্যান্য পরামর্শগুলির সাথে সামান্য কিছু অনুরূপ তবে এখনও সহজ এবং মনে রাখা খুব ভাল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.