Generics TypeScript: مفتاح الاستدلال لنوع إرجاع قيمة المفتاح من وسيطة الدالة

2

لا بد لي من الوظيفة التالية:

function x<V = string, K extends string = string>(myKey: K): {[k in K]: V} {
  return null as any;
}

أود التخلص (أو حذف) K extends string = string جزء.

في هذه اللحظة يجب أن أسميها على هذا النحو:

const res = x<number, 'foo'>('foo');   // resulting type: { foo: number }

لكني لا أريد الكتابة foo مرتين. أنا ببساطة أريد استخدامه مثل هذا:

const res = x<number>('foo');

على الرغم من مثالي ، أود أن اكتب الوظيفة على النحو التالي:

function x<V = string>(myKey: string): {[myKey]: V} {
  return null as any;
}

هل هذا ممكن بطريقة أو بأخرى؟

1 إجابة

1
افضل جواب

سيكون ممكنًا في 3.1 لاستنتاج بعض وسيطات النوع فقط مع وسيطات النوع المسماة واستدلال وسيطة النوع الجزئي .

حتى ذلك الحين ، يمكن أن تقوم الوظيفة بإرجاع وظيفة أخرى ، حيث تحدد المكالمة الأولى معلمة النوع الأول والثانية تستنتج الباقي

function x<V = string>() {
    return function <K extends string = string>(myKey: K): { [k in K]: V } {
        return null as any;
    }
}

x<string>()('foo')
:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام