nl_tokens: TypeScript Specification 1 . 0 ( 6 . 3 ) - July 2014 An explicitly typed function whose return type isn t the Void or the Any type must have at least one return statement somewhere in its body . An exception to this rule is if the function implementation consists of a single throw statement .
pl_tokens: function checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment ( func , returnType ) { if ( ! produceDiagnostics ) { return ; } // Functions that return 'void' or 'any' don't need any return expressions. if ( returnType === voidType || isTypeAny ( returnType ) ) { return ; } // If all we have is a function signature, or an arrow function with an expression body, then there is nothing to check. if ( ts . nodeIsMissing ( func . body ) || func . body . kind !== 192 /* Block */ ) { return ; } var bodyBlock = func . body ; // Ensure the body has at least one return expression. if ( bodyContainsAReturnStatement ( bodyBlock ) ) { return ; } // If there are no return expressions, then we need to check if // the function body consists solely of a throw statement; // this is to make an exception for unimplemented functions. if ( bodyContainsSingleThrowStatement ( bodyBlock ) ) { return ; } // This function does not conform to the specification. error ( func . type , <mask> . Diagnostics . A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_or_consist_of_a_single_throw_statement ) ; }