You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
const[a,b]="hello".split('@');console.log([a,b]);// b is typed as string, but it can be undefined. a, on the other hand, is guaranteed to be string and not undefined.// If b is passed to a function that strictly expects valid string, we get a runtime error.// Compiler should have prevented it by detecting that b can be string|undefined.console.log(foo(a,b));functionfoo(a:string,b:string){returna.length+b.length;}
π Actual behavior
Variable b is typed as string, when it can have an undefined value. Correct type would be string | undefined, so compiler can detect if it is being incorrectly passed to a function that strictly expects a valid string value.
π Expected behavior
String.split() return type should be [string, ...(string | undefined)[]] to be correct.
This would be breaking change for programs using strict checks, but it will help catch unexpected undefined values being passed around.
Current workaround is to fix the type on every split() call:
Bug Report
π Search Terms
string.split undefined
π Version & Regression Information
β― Playground Link
Playground Link
π» Code
π Actual behavior
Variable
b
is typed asstring
, when it can have anundefined
value. Correct type would bestring | undefined
, so compiler can detect if it is being incorrectly passed to a function that strictly expects a valid string value.π Expected behavior
String.split() return type should be
[string, ...(string | undefined)[]]
to be correct.This would be breaking change for programs using strict checks, but it will help catch unexpected undefined values being passed around.
Current workaround is to fix the type on every split() call:
The compiler will then flag invalid calls using
b
as string.Playground Link
The text was updated successfully, but these errors were encountered: