TypeScript Version:
v4.0.0-dev.20200523
Search Terms:
type guard closure
Code
letdata: {[k: string]: string}={}functiondeleteOnClick(){letkey=findKey()if(!key){return;}letkey2=keywindow.addEventListener("click",()=>{deletedata[key2]// this is okdeletedata[key]// type error, key can be null})}functionfindKey(): string|null{returnnull}Expected behavior:
delete data[key] contains no error
Actual behavior:
delete data[key] contains type error
Playground Link:
https://www.typescriptlang.org/play/?#code/DYUwLgBAJghmMC4IG8DaBrJBnMAnAlgHYDmAutnkcQL4QC8K1AUAGYCuhAxmPgPaHQQoMCADyhAMLB8ndAAoAlCiYRVEYRHQgAnvQgsiUANI7FKtfhYQ5AQi3alyc2rW5wbXIQDcziMxca9gBMeva+AO6GvOEAdDBQUACiAG4ghGAAMvg4aSC4cgBEnNKyBQA01kp0AHzKLi5QQuAg0HAwGDpBpBAA9D0QYAAW2RAjvOi+DU0irfAd2t19A9oADi15uLy4FfYQnDACAEYthGzAwL7UCkzMrBzcfAIGhMamChQEJBAAPhCn53VXO5PH8zhdqEA
Related Issues:
TypeScript Version:
v4.0.0-dev.20200523
Search Terms:
type guard closure
Code
Expected behavior:
delete data[key]contains no errorActual behavior:
delete data[key]contains type errorPlayground Link:
https://www.typescriptlang.org/play/?#code/DYUwLgBAJghmMC4IG8DaBrJBnMAnAlgHYDmAutnkcQL4QC8K1AUAGYCuhAxmPgPaHQQoMCADyhAMLB8ndAAoAlCiYRVEYRHQgAnvQgsiUANI7FKtfhYQ5AQi3alyc2rW5wbXIQDcziMxca9gBMeva+AO6GvOEAdDBQUACiAG4ghGAAMvg4aSC4cgBEnNKyBQA01kp0AHzKLi5QQuAg0HAwGDpBpBAA9D0QYAAW2RAjvOi+DU0irfAd2t19A9oADi15uLy4FfYQnDACAEYthGzAwL7UCkzMrBzcfAIGhMamChQEJBAAPhCn53VXO5PH8zhdqEA
Related Issues: