გენერიკები - 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-ში. თქვენ ნამდვილად არ უნდა დაწეროთ მეტი ტიპები, ვიდრე იქ არის. (და კი, ეს ბევრი ტიპები არ არის, ეს პირდაპირ მიზანია ;) )