React ve Redux kullanıyorum ve arabirimler olarak eylem türleri belirlendi, böylece redüktörlerim gelişmiş tip güvenliği için etiketli birleşim türlerinden yararlanabilir.
Yani, şuna benzeyen tür bildirimlerim var:
interface AddTodoAction {
type: "ADD_TODO",
text: string
};
interface DeleteTodoAction {
type: "DELETE_TODO",
id: number
}
type TodoAction = AddTodoAction | DeleteTodoAction
Bu eylemleri oluşturan yardımcı işlevler yapmak istiyorum ve bunun için ok işlevlerini kullanma eğilimindeyim. Bunu yazarsam:
export const addTodo1 = (text: string) => ({
type: "ADD_TODO",
text
});
Derleyici AddTodoAction, dönüş türü açıkça belirtilmediğinden bunun geçerli olduğundan emin olmak için herhangi bir yardım sağlayamaz . Bunu yaparak dönüş türünü açıkça belirtebilirim:
export const addTodo2: (text: string) => AddTodoAction = (text: string) => ({
type: "ADD_TODO",
text
})
Ancak bu, işlev argümanlarımı iki kez belirtmeyi gerektirir, bu nedenle ayrıntılı ve okunması daha zordur.
Ok gösterimini kullanırken dönüş türünü açıkça belirtebilmemin bir yolu var mı?
Bunu denemeyi düşündüm:
export const addTodo3 = (text: string) => <AddTodoAction>({
type: "ADD_TODO",
text
})
Bu durumda, derleyici artık dönüş türünü şu şekilde algılar, AddTodoActionancak döndürdüğüm nesnenin tüm uygun alanlara sahip olduğunu doğrulamaz.
Bunu farklı bir işlev sözdizimine geçerek çözebilirim:
export const addTodo4 = function(text: string): AddTodoAction {
return {
type: "ADD_TODO",
text
}
}
export function addTodo5(text: string): AddTodoAction {
return {
type: "ADD_TODO",
text
}
}
Bu yöntemlerden herhangi biri derleyicinin doğru dönüş türünü kullanmasına ve tüm alanları uygun şekilde ayarladığımı zorlamasına neden olur, ancak bunlar aynı zamanda daha ayrıntılıdır ve thisbir işlevde işlenme şeklini değiştirirler (bu bir sorun olmayabilir, Sanırım.)
Bunu yapmanın en iyi yolu hakkında herhangi bir tavsiye var mı?
getTitle = ():string => 'State Lists'