typescript - call() returnerar inte rätt typ
Jag har följande typescript:
let fn = function (): boolean {
return true
}
let res1: number
res1 = fn.call(null) // Should error
Jag borde inte tillåtas att tilldela res1 eftersom det deklareras som number och resultatet av fn.call() skulle vara boolean. Kontrollera i playgrounden.
Det här var ett problem men det blev fixat, så gör jag något fel?
Svar #1
Det finns ett speciellt kompileringsalternativ (som inte är tillgängligt i lekplatsen) som gör att call och bind och apply bevarar korrekt typ.
Alternativet är strictBindCallApply och du kan läsa om det här:
Aktivera striktare kontroll av bind-, call- och apply-metoderna på funktioner.
Med detta alternativ inställt på true kommer din kod att ge ett fel som förväntat.
Svar #2
Ganska konstigt. Alternativt kan du direkt kalla på funktionen med fn() och det kommer att ge kompilationsfel.
let fn = function (): boolean {
return true
}
let res1: number
res1 = fn() // Will definitely result in error.
