გენერიკები - redux-toolkit createAction() ტიპის განსაზღვრა TypeScript-ში


მე ბოლო დროს ვათვლი redux-toolkit ბიბლიოთეკას, მაგრამ პრობლემას ვაწყდები createAction ფუნქციის ტიპის დეკლარაციასთან, როგორც მოცემულია ქვემოთ.

createAction აბრუნებს PayloadActionCreator-ს, რომელსაც აქვს გენერიკი <ReturnType<PA>['payload'], T, PA>. თუმცა, რას ნიშნავს ReturnType<PA>['payload']?

export declare function createAction<PA extends PrepareAction<any>, T extends string = string>(type: T, prepareAction: PA): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>

პასუხი #1

ReturnType<PA>['payload'] ნიშნავს ობიექტის payload თვისებას, რომელიც დაბრუნებულია prepare ფუნქციის მიერ - რადგან ეს არის prepare ნოტაციის სინტაქსი.

თუმცა, ეს თქვენ არ უნდა შეგაშინებდეთ. ჩვეულებრივი გამოყენებაა const actionCreator=createAction<PayloadType>('some/action/type').

ალტერნატიული ნოტაცია იქნებოდა მზადების ნოტაცია, ფორმით createAction('some/action/type', (payload: string) => ({ payload, meta: {something: "foo"}}).

ზოგადად, გთხოვთ მიმართოთ API დოკუმენტაციას, რომელიც თითქმის ყველა გამოყენების მაგალითს მოიცავს TypeScript-ში. თქვენ ნამდვილად არ უნდა დაწეროთ მეტი ტიპები, ვიდრე იქ არის. (და კი, ეს ბევრი ტიპები არ არის, ეს პირდაპირ მიზანია ;) )