Type guards for function in TypeScript -


i've defined type filter in typescript, can string, regexp or predicator, function. type defines listed below.

export type predicator = (input: string) => boolean; export type singlefilter = string | regexp | predicator; 

there's function taking singlefilter input. however, type guards seems not working predicator, long regexp presists. issue gone if type string | predicator only.

function singlepredicator(value: any) {   if (typeof value === 'string') {     // string   }   else if (value instanceof regexp) {     //   }   else {     // function     // error ts2349: cannot invoke expression type lacks call signature.     value(foo);   } } 

is there solution make work in case? thanks. i'm using tsc 1.5.3

the first change in example below have typed value paramater singlefilter rather `any.

the second change type assertion in last else statement hint compiler value predicator.

export type predicator = (input: string) => boolean; export type singlefilter = string | regexp | predicator;  function singlepredicator(value: singlefilter) {   if (typeof value === 'string') {     // string     return value.charat(0);   } else if (value instanceof regexp) {     //     value.test("something");   } else {     // function     var foo = "somefoo";     value(foo);   } } 

Comments

Popular posts from this blog

java - UnknownEntityTypeException: Unable to locate persister (Hibernate 5.0) -

python - ValueError: empty vocabulary; perhaps the documents only contain stop words -

ubuntu - collect2: fatal error: ld terminated with signal 9 [Killed] -