Merge pull request #26150 from Kingwl/CheckReturnUnknow

add check for function return unknow type
This commit is contained in:
Ryan Cavanaugh
2018-08-06 13:52:14 -07:00
committed by GitHub
2 changed files with 5 additions and 2 deletions

View File

@@ -20681,7 +20681,7 @@ namespace ts {
}
// Functions with with an explicitly specified 'void' or 'any' return type don't need any return expressions.
if (returnType && maybeTypeOfKind(returnType, TypeFlags.AnyOrUnknown | TypeFlags.Void)) {
if (returnType && maybeTypeOfKind(returnType, TypeFlags.Any | TypeFlags.Void)) {
return;
}

View File

@@ -18,11 +18,12 @@ tests/cases/conformance/types/unknown/unknownType1.ts(114,9): error TS2322: Type
Type 'unknown' is not assignable to type '{}'.
tests/cases/conformance/types/unknown/unknownType1.ts(120,9): error TS2322: Type 'T' is not assignable to type 'object'.
tests/cases/conformance/types/unknown/unknownType1.ts(129,5): error TS2322: Type '123' is not assignable to type '{ [x: string]: unknown; }'.
tests/cases/conformance/types/unknown/unknownType1.ts(149,17): error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value.
tests/cases/conformance/types/unknown/unknownType1.ts(155,14): error TS2700: Rest types may only be created from object types.
tests/cases/conformance/types/unknown/unknownType1.ts(161,5): error TS2564: Property 'a' has no initializer and is not definitely assigned in the constructor.
==== tests/cases/conformance/types/unknown/unknownType1.ts (21 errors) ====
==== tests/cases/conformance/types/unknown/unknownType1.ts (22 errors) ====
// In an intersection everything absorbs unknown
type T00 = unknown & null; // null
@@ -211,6 +212,8 @@ tests/cases/conformance/types/unknown/unknownType1.ts(161,5): error TS2564: Prop
// Functions with unknown return type don't need return expressions
function f27(): unknown {
~~~~~~~
!!! error TS2355: A function whose declared type is neither 'void' nor 'any' must return a value.
}
// Rest type cannot be created from unknown