I have the following object whose values are retrieved dynamically. Each function call (getFoo, getBar, etc) can either return a value or undefined.
let ExampleObj = { foo: getFoo(), bar: getBar(), baz: getBaz(), ... } const getFoo:()=>Foo|undefined = () => {...} ... As per an answer to this question here, I'm using Array.every to check that each value in the object is defined, returning undefined if there is even a single undefined value, i.e -
type ExampleObj = { foo: Foo bar: Bar baz: Baz } const returnsExampleObj:ExampleObj|undefined = () => { let exampleObj = { foo: getFoo(), bar: getBar(), baz: getBaz(), } return Object.values(exampleObj).every(val => val != undefined) ? exampleObj : undefined; }; However, the Typescript linter is unable to infer that I've performed this check so it complains that I'm returning an invalid type (since ExampleObj values can never be undefined). Do I just have to //@ts-ignore this away, or is there a better way of going about this?
没有评论:
发表评论