[see example in playground](http://www.typescriptlang.org/Playground#src=interface%20IFoo%20%7B%0D%0A%09value%3A%20string%5B%5D%7Cstring%3B%0D%0A%7D%0D%0A%0D%0Afunction%20bar%28options%3A%20IFoo%29%20%7B%0D%0A%09var%20val%20%3D%20options.value%3B%0D%0A%09var%20result%3A%20string%3B%0D%0A%09if%20%28val%20instanceof%20Array%29%20%7B%0D%0A%09%09result%20%3D%20val.join%28''%29%0D%0A%09%7D%20else%20%7B%0D%0A%09%09result%20%3D%20val%3B%0D%0A%09%7D%0D%0A%7D) ``` javascript interface IFoo { value: string[]|string; } function bar(options: IFoo) { var val = options.value; var result: string; if (val instanceof Array) { result = val.join('') } else { result = val; } } ``` val has one of two types strting[] or string in 'if' condition checked instanceofArray in else statement compiler should know that val has string type