[英]How to avoid unnecessary arguments when using optional generic type in TypeScript?
StateFunction 有一個可選的(第二個)泛型類型——因為它有一個默認值。 問題是,如果我不通過第二個泛型,我仍然必須將undefined
作為參數,即使我認為此時它是可選的。
使用 args 使args
可選args?
確實有幫助,但它強制檢查空值,即使強硬類型也不能為空。
我也可以使 function 過載,但這不是最佳的,因為我使用的真正 function 相當長。
在未指定第二個泛型的情況下,是否有真正的解決方案可以使該論點消失?
interface StateFunctionAction<T, P> {
(saved: T, args: P): void
}
const StateFunction = <T, P = undefined>(value : T, action: StateFunctionAction<T, P>) => {
let saved = value;
return (args : P) => action(saved, args);
}
const example1 = StateFunction<string>("Hello World", (saved) => console.log(saved))
example1(); // Help -> An argument for 'args' was not provided.
const example2 = StateFunction<string, number>("Hello World", (saved, n) => console.log(saved + " " + n))
example2(5);
不要使用undefined
作為默認泛型類型,而是使用void
。 這將使爭論消失。
const StateFunction = <T, P = void>(value : T, action: StateFunctionAction<T, P>) => {
let saved = value;
return (args : P) => action(saved, args);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.