वहाँ क्या दोनों वाक्यविन्यास (एक समारोह के रिटर्न मान) का प्रतिनिधित्व करते हैं, लेकिन आम तौर पर बोल में कोई अंतर नहीं है का उपयोग करें, :
वाक्य रचना समारोह में उपयोग के लिए है घोषणाओं और =>
वाक्य रचना में इस्तेमाल के लिए है फ़ंक्शन अभिव्यक्ति। (इन दो चीजों के बीच अंतर के अवलोकन के लिए Javascript function declarations vs function operators पढ़ें।)
कोलन सिंटैक्स कम से कम त्याग किए गए एक्मास्क्रिप्ट 4 विनिर्देश के लिए वापस आता है जो इस वाक्यविन्यास का उपयोग करके प्रकार एनोटेशन पेश करता है। तीर सिंटैक्स arrow function expression से एक्मास्क्रिप्ट 6 में आता है जो फ़ंक्शन "कीवर्ड" के रूप में वसा तीर प्रतीक का उपयोग करता है। तीर सिंटैक्स उन स्थानों के लिए एक शॉर्टेंड प्रदान करता है जहां कोलन का उपयोग किया जाने पर अस्पष्टता होगी, और इन मामलों में दृष्टि से पार्स करना आम तौर पर आसान होता है।
उदाहरण के लिए
, एक समारोह है कि एक कॉलबैक स्वीकार करता है, :
का उपयोग कर का प्रतिनिधित्व करने के कॉलबैक की वापसी प्रकार {}
साथ प्रकार लपेटकर के बिना असंभव है को देखते हुए, लेकिन =>
साथ सरल है:
// ambiguous parse, syntax error
function sendString(callback: (value: string): void);
// valid, using fat arrow
function sendString(callback: (value: string) => void);
// same thing, using curly brackets
// (harder to write, harder to parse visually)
function sendString(callback: { (value: string): void; });
में कक्षाओं, कार्यों के लिए वसा तीर वाक्यविन्यास का उपयोग करना संभव है, लेकिन विधियों के लिए नहीं, उदाहरण के लिए:
class Foo {
// In TypeScript’s eyes, this is actually a
// property, not a method!
someMethod: (value: string) => boolean;
}
इस मामले में, टाइपस्क्रिप्ट एक कक्षा के गुण और कक्षा के विधियों के बीच एक अंतर बनाता है। इस तरह के गुणों के रूप में परिभाषित कार्यों को शरीर की आवश्यकता नहीं है, लेकिन उप-वर्गों में विधियों के रूप में ओवरराइड या परिभाषित नहीं किया जा सकता है। दूसरे शब्दों में, आप ऐसा कर सकता है नहीं है, भले ही हस्ताक्षर कर रहे हैं 'उपयुक्त':
class Bar extends Foo {
// nope!
someMethod(value: string): boolean {
return true;
}
}
अंत में, जिस तरीके प्रकार वाक्य रचना टाइपप्रति में काम करता है, यह हमेशा उपयोग करना संभव है किसी भी फ़ंक्शन प्रकार के लिए कोलन सिंटैक्स, लेकिन यह तीर सिंटैक्स का उपयोग करने के लिए हमेशा संभव है। सबसे महत्वपूर्ण बात यह है कि कोड लिखना स्पष्ट और पठनीय है, इसलिए सिंटैक्स का उपयोग करें जो स्थिति के लिए सबसे उपयुक्त है। आम तौर पर इसका मतलब कॉलबैक पैरामीटर के लिए =>
और अन्य सभी चीज़ों के लिए :
का उपयोग करना है।