सरल बनाने टाइपप्रति प्रकार के अंदर के प्रकार पॉपअप

0

सवाल

यह संभव है को आसान बनाने के लिए है कि प्रकार में दिखाया जा रहा है के प्रकार-टूल टिप दिखाई दे रहा है कि जब मैं हॉवर पर एक चर में टाइपप्रति?

मैं निम्नलिखित कोड है:

type Debug<T> = {
    [key in keyof T]: T[key]
}

type Chainable<Acc = {}> = {
    option: <K extends string, V>(key: K, value: V) => Chainable<Acc & {[k in K]: V}>;
    get: () => Debug<Acc>;
}

declare const config: Chainable
const result = config
  .option('foo', 123)
  .option('name', 'type-challenges')
  .option('bar', { value: 'Hello World' })
  .get()


type X = typeof result;

जब मैं पर जाएँ result चर मैं: [hovering over result variable 1

हालांकि, जब मैं पर जाएँ type X मैं देख रहा हूँ: hovering over a typeof result

सवाल:

  1. क्यों कर रहे हैं उन प्रकार अलग ढंग से दिखाया गया? (भले ही वे प्रतिनिधित्व करते हैं एक ही बात है)
  2. वहाँ एक तरीका है करने के लिए दिखाने के प्रकार की तरह दिखाया जाता है दूसरी स्क्रीन में?

खेल का मैदान

types typescript
2021-11-23 22:28:22
3

सबसे अच्छा जवाब

1

आप ऐसा कुछ कर सकता:

type Chainable<Acc = {}> = {
    option: <K extends string, V>(key: K, value: V) => Chainable<{[k in K | keyof Acc]: k extends keyof Acc ? Acc[k] : V}>;
    get: () => Debug<Acc>;
}

असल में यह एक ही बात कर के रूप में आप क्या कर रहे हैं, लेकिन एक और अधिक दौर के बारे में जिस तरह.

पर भरोसा करने के बजाय & पैरामीटर जाएगा जो अपवित्र मंडराना संकेत है । आप कर सकते हैं प्रभावी ढंग से विश्राम पूरे वस्तु से खरोंच.

यह उपयोग करके हासिल की है k in K | keyof Acc कुंजी के रूप में, लेकिन यह भी मतलब है कि आप की जरूरत है एक सशर्त प्रकार के लिए मूल्य.

मैं इस कल्पना शायद कम performant लेकिन ईमानदारी से मुझे नहीं लगता कि यह सबसे ज्यादा फर्क पड़ेगा.

खेल का मैदान

2021-11-24 03:11:45
0

यह एक प्राथमिक अंतर के बीच type कीवर्ड और interface कीवर्ड. इंटरफ़ेस नामों में दिखाई देते हैं टूलटिप्स लेकिन प्रकार का नाम नहीं है ।

2021-11-24 03:36:18
0

ऐसा लगता है कि यह संभव है बनाने के लिए एक उपयोगिता है कि टाइप करना होगा सपाट स्वचालित रूप से । तो, वहाँ कोई जरूरत नहीं करने के लिए काटना प्रकार जिस तरह से @zecuria किया था ।

type Chainable<Acc = {}> = {
    option: <K extends string, V>(key: K, value: V) => Chainable<Acc & {[k in K]: V}>;
    get: () => Util_FlatType<Acc>;
}

type Util_FlatType<T> = T extends object ? { [K in keyof T]: Util_FlatType<T[K]> } : T

enter image description here

Util_FlatType से चोरी हो रही है यहाँ

2021-11-28 15:00:21

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में