@@ -29,6 +29,7 @@ import {
29
29
emptyArray ,
30
30
endsWith ,
31
31
ensureTrailingDirectorySeparator ,
32
+ every ,
32
33
Expression ,
33
34
extend ,
34
35
Extension ,
@@ -2973,7 +2974,7 @@ function parseJsonConfigFileContentWorker(
2973
2974
} ;
2974
2975
2975
2976
function getConfigFileSpecs ( ) : ConfigFileSpecs {
2976
- const referencesOfRaw = getPropFromRaw ( "references" , ( element ) : element is ProjectReference => ! ! element && typeof element === "object" , "object" ) ;
2977
+ const referencesOfRaw = getPropFromRaw < ProjectReference > ( "references" , element => typeof element === "object" , "object" ) ;
2977
2978
const filesSpecs = toPropValue ( getSpecsFromRaw ( "files" ) ) ;
2978
2979
if ( filesSpecs ) {
2979
2980
const hasZeroOrNoReferences = referencesOfRaw === "no-prop" || isArray ( referencesOfRaw ) && referencesOfRaw . length === 0 ;
@@ -3048,7 +3049,7 @@ function parseJsonConfigFileContentWorker(
3048
3049
3049
3050
function getProjectReferences ( basePath : string ) : readonly ProjectReference [ ] | undefined {
3050
3051
let projectReferences : ProjectReference [ ] | undefined ;
3051
- const referencesOfRaw = getPropFromRaw ( "references" , ( element ) : element is ProjectReference => ! ! element && typeof element === "object" , "object" ) ;
3052
+ const referencesOfRaw = getPropFromRaw < ProjectReference > ( "references" , element => typeof element === "object" , "object" ) ;
3052
3053
if ( isArray ( referencesOfRaw ) ) {
3053
3054
for ( const ref of referencesOfRaw ) {
3054
3055
if ( typeof ref . path !== "string" ) {
@@ -3076,12 +3077,11 @@ function parseJsonConfigFileContentWorker(
3076
3077
return getPropFromRaw ( prop , isString , "string" ) ;
3077
3078
}
3078
3079
3079
- function getPropFromRaw < T > ( prop : "files" | "include" | "exclude" | "references" , validateElement : ( value : unknown ) => value is T , elementTypeName : string ) : PropOfRaw < T > {
3080
+ function getPropFromRaw < T > ( prop : "files" | "include" | "exclude" | "references" , validateElement : ( value : unknown ) => boolean , elementTypeName : string ) : PropOfRaw < T > {
3080
3081
if ( hasProperty ( raw , prop ) && ! isNullOrUndefined ( raw [ prop ] ) ) {
3081
- const value = raw [ prop ] ;
3082
- if ( isArray ( value ) ) {
3083
- const result = filter ( value , validateElement ) ;
3084
- if ( ! sourceFile && result . length !== value . length ) {
3082
+ if ( isArray ( raw [ prop ] ) ) {
3083
+ const result = raw [ prop ] as T [ ] ;
3084
+ if ( ! sourceFile && ! every ( result , validateElement ) ) {
3085
3085
errors . push ( createCompilerDiagnostic ( Diagnostics . Compiler_option_0_requires_a_value_of_type_1 , prop , elementTypeName ) ) ;
3086
3086
}
3087
3087
return result ;
0 commit comments