টাইপস্ক্রিপ্ট বা জাভাস্ক্রিপ্ট টাইপ কাস্টিং


184

কীভাবে কোনও হ্যান্ডেল টাইপস্ক্রিপ্ট বা জাভাস্ক্রিপ্টে টাইপ কাস্টিং করে?

বলুন আমার কাছে নিম্নলিখিত টাইপস্ক্রিপ্ট কোড রয়েছে:

module Symbology { 

    export class SymbolFactory { 

        createStyle( symbolInfo : SymbolInfo) : any { 
            if (symbolInfo == null)
            {
                 return null;
            }

            if (symbolInfo.symbolShapeType === "marker") {      

                // how to cast to MarkerSymbolInfo          
                return this.createMarkerStyle((MarkerSymbolInfo) symbolInfo);
            }                                  
        }

        createMarkerStyle(markerSymbol : MarkerSymbolInfo ): any { 
            throw "createMarkerStyle not implemented";
        }              

    }
}

যেখানে SymbolInfoএকটি বেস ক্লাস। আমি থেকে টাইপকাস্টিং কিভাবে হ্যান্ডেল করবেন SymbolInfoকরতে MarkerSymbolInfoটাইপ করা বিষয় অথবা Javascript মধ্যে?

উত্তর:


284

আপনি এই মত নিক্ষেপ করতে পারেন:

return this.createMarkerStyle(<MarkerSymbolInfo> symbolInfo);

বা tsx মোডের সাথে সামঞ্জস্য রাখতে চাইলে এটি পছন্দ করুন:

return this.createMarkerStyle(symbolInfo as MarkerSymbolInfo);

কেবল মনে রাখবেন যে এটি একটি সংকলন-সময় কাস্ট, এবং কোনও রানটাইম কাস্ট নয়।


10
এখন, আমি দেখতে পাচ্ছি যে দস্তাবেজে, বিভাগের 4.13 অনুচ্ছেদে প্রকার সংস্থান হিসাবে উল্লেখ করা হয়েছে।
ক্লাউস এনজি

এই উত্তরটি আর টাইপ স্ক্রিপ্টে টাইপ-এররেন্সির সম্পূর্ণ চিত্র সরবরাহ করে না, তবে অ্যালেক্সের উত্তর আরও একটি সম্পূর্ণ চিত্র দেয় এবং এটি গ্রহণযোগ্য উত্তর হওয়া উচিত।
ক্রিস্টোফার ডরফ

এই উত্তরটি 4 বছরের পুরানো @ টাইপস্ক্রিপ্ট লেখার সময় সংস্করণে ছিল 0.8.1, এবং এই সময়টিতে সঠিক উত্তর ছিল। জেএসএক্স সমর্থনটি কেবল 3 বছর পরে অন্তর্ভুক্ত করা হয়েছিল।
ব্লার্কফিশ

@ ব্লারকফিশ এটি সত্য, তবে সময়কে অনুসরণ করা ভাল অনুশীলন, সুতরাং আজ একই প্রশ্ন জিজ্ঞাসা করা লোকেরা বর্তমান উত্তর পেয়েছে, এবং 4 বছর আগে যেমন ছিল তেমন নয় :-)
ক্রিস্টোফার ডরফ

159

এটিকে টাইপস্ক্রিপ্টে টাইপ প্রতিস্থাপন বলা হয় এবং টাইপস্ক্রিপ্ট ১.6 থেকে এটি প্রকাশ করার দুটি উপায় রয়েছে:

// Original syntax
var markerSymbolInfo = <MarkerSymbolInfo> symbolInfo;

// Newer additional syntax
var markerSymbolInfo = symbolInfo as MarkerSymbolInfo;

উভয় বিকল্প কার্যত অভিন্নas-সিনট্যাক্স প্রবর্তনের কারণ হ'ল আসল সিনট্যাক্সটি জেএসএক্সের সাথে বিরোধী , এখানে নকশা আলোচনা দেখুন ।

আপনি যদি নির্বাচনের মতো অবস্থানে থাকেন তবে কেবলমাত্র সিনট্যাক্সটি ব্যবহার করুন যা আপনি আরও স্বাচ্ছন্দ্য বোধ করেন। আমি ব্যক্তিগতভাবে- asসিনট্যাক্সটিকে পছন্দ করি কারণ এটি পড়তে এবং লিখতে আরও সাবলীল মনে হয়।


2
আপনি কীভাবে টাইপস্ক্রিপ্টকে ইঙ্গিত করবেন যে আপনি কোনও বস্তুকে অন্য ধরণের রূপান্তর করেছেন? উদাহরণস্বরূপ একটি ফানক যা টাইপ 2 রিটার্ন করে, তার ভিতরে এটি টাইপ 1 পায়, রূপান্তরিত করার জন্য যুক্তি যুক্ত করে, এবং টাইপ 1 যা ফিরে আসে এখন টাইপ 2?
টনি গুতেরেস

@ টনিগুটিরেরেজ আপনি কীভাবে রূপান্তর করেন?
অ্যালেক্স

1
মূলত একটি সম্পত্তি নিন এবং সংশোধন করুন। আমি এটি করার একমাত্র উপায়টি হ'ল একটি নতুন ভার (টাইপ 2) তৈরি করা এবং টাইপ 1var থেকে প্রপসগুলিতে অনুলিপি করা এবং তারপরে এটি ফিরিয়ে আনা। আপনি টাইপ 1 সংশোধন করতে পারবেন না এবং ফিরে আসতে পারবেন না, বা আপনি "কাস্ট করতে পারবেন না" ত্রুটি পান।
টনি গুতেরেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.