TypeScript源码中的一个很有意思的简写
2023-12-30 10:09:41
在读TypeScript源码时,发现一个很有意思的简写?:
return scriptInfo ?
? ? ? ? ? ? scriptInfo.getDefaultProject() :
? ? ? ? ? ? (this.logErrorForScriptInfoNotFound(isString(fileNameOrScriptInfo) ? fileNameOrScriptInfo : fileNameOrScriptInfo.fileName), Errors.ThrowNoProject());
注意return语句中第一层三目运算符最后面那部分,在里面直接在逗号运算符后面抛出了错误信息。
这段代码乍看有点不合常规,但是理解了逗号运算符的作用之后,就豁然开朗了,感觉用的很妙。
逗号运算符的作用:
?逗号运算符(,)
逗号(
,
)运算符对它的每个操作数从左到右求值,并返回最后一个操作数的值。这让你可以创建一个复合表达式,其中多个表达式被评估,复合表达式的最终值是其成员表达式中最右边的值。这通常用于为?for?循环提供多个参数。
其实上面那段代码所做的就是如果取不到默认项目,就在返回文件名称或脚本信息的同时抛出异常,终止程序执行。
完整代码如下:
private doEnsureDefaultProjectForFile(fileNameOrScriptInfo: NormalizedPath | ScriptInfo): Project {
this.ensureProjectStructuresUptoDate();
const scriptInfo = isString(fileNameOrScriptInfo) ? this.getScriptInfoForNormalizedPath(fileNameOrScriptInfo) : fileNameOrScriptInfo;
return scriptInfo ?
scriptInfo.getDefaultProject() :
(this.logErrorForScriptInfoNotFound(isString(fileNameOrScriptInfo) ? fileNameOrScriptInfo : fileNameOrScriptInfo.fileName), Errors.ThrowNoProject());
}
欢迎关注公众号:文本魔术,了解更多
?
文章来源:https://blog.csdn.net/wannianchuan/article/details/135274605
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!