অ্যারে <টাইপ> ভিএস প্রকার [] টাইপস্ক্রিপ্টে


162

যতদূর আমি জানি কোনও সম্পত্তির ধরণ যখন এটি অ্যারে হয় তখন দুটি উপায়ে সংজ্ঞায়িত করা যায়।

property_name: type

যেখানে টাইপ হয় হতে পারে

Array<string>, Array<MyType>, etc. (e.g. let prop1: Array<string>)

এবং

string[], MyType[], etc. (e.g. let prop1: string[])

দুটি মামলার মধ্যে পার্থক্য কী ? বা আমি কি কিছু ভুল বুঝতে পারি (সম্ভবত কিছু << castালাইতে ব্যবহৃত হয়েছে?)

সম্পাদনাটি যেহেতু প্রশ্নটিকে সদৃশ হিসাবে চিহ্নিত করা হয়েছে, তাই আমি সচেতন যে যে কোনও বিষয়ে অন্য প্রশ্ন রয়েছে [তবে] পোস্ট করার আগে আমার এটি একবার ছিল এবং আমার কাছে এটি ভিন্ন [] ভিএস <এর চেয়ে 'টাইপ' সম্পর্কে আরও ছিল was > জিজ্ঞাসা করেছি



1
এগুলি কার্যত একই গঠন এবং কার্যকরভাবে রানটাইমে একই জিনিস। প্রতিচ্ছবি-মেটাডেটা তাদের উভয়কেই তাদের নির্মাতা হিসাবে Arrayবস্তু হিসাবে গণ্য করবে । উপরের লিঙ্কিত উত্তর দেখুন।
— জন ওয়েইজ

3
@ নীটজান টোমারের প্রশ্নটি পুরানো - Array<T>তখন আর উপস্থিত ছিল না।
— নাথান শিভলি-স্যান্ডার্স

@ NathanShively-স্যান্ডার্সের উত্তর সহ বা জেনেরিক্স ছাড়া একই কারণ এই প্রশ্ন "মধ্যে পার্থক্য কি কমে যাবে let x: Array;থেকে let x: any[];"
— Nitzan Tomer

উত্তর:


168

কোন শব্দার্থক পার্থক্য নেই

কোনও পার্থক্য নেই। Type[]এর অ্যারের জন্য শর্টহ্যান্ড সিনট্যাক্সType । Array<Type>হয় জেনেরিক সিনট্যাক্স । তারা সম্পূর্ণ সমতুল্য।

হ্যান্ডবুকটি এখানে একটি উদাহরণ সরবরাহ করে । এটি লেখার সমতুল্য:

function loggingIdentity<T>(arg: T[]): T[] {
    console.log(arg.length);
    return arg;
}

বা:

function loggingIdentity<T>(arg: Array<T>): Array<T> {
    console.log(arg.length);
    return arg;
}

এবং এখানে কিছু রিলিজ নোটের একটি উদ্ধৃতি দেওয়া হয়েছে :

বিশেষত, number[]এটি একটি শর্টহ্যান্ড সংস্করণ Array<number>, যেমন Date[]শর্টহ্যান্ডের জন্য Array<Date>।

যাইহোক, একটি ক্ষেত্রে আছে যেখানে শর্টহ্যান্ড সিনট্যাক্স প্রয়োজন

টাইপস্ক্রিপ্ট ৩.৪ থেকে নতুন টাইপ সংশোধকটির জন্য পার্থক্য রয়েছেreadonly । প্রকৃতপক্ষে:

readonlyটাইপ পরিবর্তক শুধুমাত্র অ্যারের ধরনের এবং tuple ধরনের সিনট্যাক্স ব্যবহার করা যেতে পারে

let err2: readonly Array<boolean>; // error!    
let okay: readonly boolean[]; // works fine

তবে নিম্নলিখিত ঘোষণাটি সমান readonly boolean[]:

let okay2: ReadonlyArray<boolean>;

1
@ ডিগ্রোনম্নল, এটি একটি জেনেরিক প্রকার। হ্যান্ডবুকটিতে কেবল "জেনারিকের হ্যালো ওয়ার্ল্ড" বিভাগটি পড়ুন ।
— পালেও

4
কোনও অফিসিয়াল সুপারিশ নেই। আমি ব্যক্তিগতভাবে শর্টহ্যান্ড এবং কেবল শর্টহ্যান্ড ( type[]) ব্যবহার করি কারণ এটি পড়া সহজ।
— পালেও

2
তারা নয় সম্পূর্ণরূপে : অভিন্ন আর typescriptlang.org/docs/handbook/release-notes/...
— DShook

1
যদি আমি এটি সঠিকভাবে বুঝতে পারি তবে readonlyযদি এটির প্রয়োজন হয় না। আপনি যদি একটি দীর্ঘ স্বরলিপি পছন্দ করেন তবে আপনি এটি লিখতে পারেন:let err2: ReadonlyArray<boolean>;
— n4nn31355

1
@ n4nn31355 আমি মনে করি। আমি এই বিজ্ঞপ্তিটি যুক্ত করতে সম্পাদনা করেছি।
— পালেও

-10
foo: Array

এর অর্থ এটি একটি সমতল অ্যারে, anyএর সদস্যদের জন্য অন্তর্ভুক্ত প্রকারের সাথে

foo: string[]

তার মানে এটি স্ট্রিংগুলির একটি অ্যারে, অর্থাত্ টাইপস্ক্রিপ্ট মানসিক হয়ে উঠবে যদি আপনি সেই অ্যারেটিতে স্ট্রিং ব্যতীত অন্য কোনও কিছুকে চাপ দেওয়ার চেষ্টা করেন।


10
প্রশ্নটি অ্যারে <স্ট্রিং> বনাম স্ট্রিং [] ছিল, অ্যারে বনাম স্ট্রিং নয় [];
— জুয়াঙ্গুই জর্ডন

এটি অদ্ভুত, টাইপস্ক্রিপ্ট মনে হয় না যখন আমি প্যারামিটার সংজ্ঞায়িত পদ্ধতিতে একটি সংখ্যার অ্যারে পাস করিfoo: string[]
— jlewkovich

3
যদি আপনি fn ([1,2,3]) সংখ্যার একটি অ্যারে পাস করেন তবে তা কিছু মনে করবে না। আপনি যদি কোনও ভেরিয়েবল পাস করেন এবং প্রকারটি স্পষ্ট না হয় তবে একটি = [] দিন; a = [1,2,3]; fn (a), তার পরে কিছু মনে হয় না কারণ a টাইপ করা আছে []
— কোয়ান্টিন 2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.