关于strictNullChecks
发布于 7 年前 作者 kfc0824 3519 次浏览 来自 问答

小弟初学nodejs,用ts脚本,strictNullChecks这个编译选项很有用处的。 但是碰到一个问题,就是一个函数要返回对象的话,一般可能是为null的。

如果不开启选项,这段代码是可以编译通过的,但是开启后是无法通过。 class CUser{ } function findUser(uid : number) : CUser{ if(uid > 0) return new CUser(); // TODO return null; } function showUserInfo(user : CUser) : void{ // … } let user : CUser = findUser(-1); showUserInfo(user);

如果开启,为了能编译通过,则需要修改为如下: class CUser{ } function findUser(uid : number) : CUser | null { if(uid > 0) return new CUser(); // TODO return null; } function showUserInfo(user : CUser | null) : void { // … } let user : CUser | null = findUser(-1); showUserInfo(user);

也就是说每个地方都需要加个null,感觉这样就比较麻烦了。所以是否有个比较简单的方式,既保留了这个编译选项的好处,但又可以不需要这么多的null呢?谢谢各位。

2 回复

逻辑上showUserInfo函数是需要传入有效值显示,那么在调用前需要对参数值有效性校验。否则就得在showUserInfo内判断有效性。

@waitingsong 嗯,我也是这样考虑的,也就是在调用之前判断。

回到顶部