const abc =<T extends {res:{a:string}}>():T['res']=>{
return {a:"1",b:1} // excess member, error as expected, ok
}
const abc2 =<T extends {res:{a:string}}>():T['res']=>{
const c:T['res'] ={a:"1"}
const d:T['res'] ={a:"1",b:"1"} // excess member, error as expected, ok
return {...c,a:"1",b:1 } // no error eventhough with excess member, problem
}
const abc3 =<T extends {res:{a:string}}>():T['res']=>{
type c = {res:{a:string}}
const c:c['res'] ={a:"1"}
return {...c,a:"1",b:1 } // excess member, error as expected, ok
}
abc
and abc3
work expected
however abc2
is not what I expect
my question:
- the reason
abc2
unable to trigger excess member check - proper way to do it