type Obj = {a?:string,b?:number,c?:boolean}; function setValue<T extends keyof Obj>(obj:Obj,value:{k:T,v:Obj[T]}){ let {k,v}=value; if(v){ obj[k]=v; } }