Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >函数是否应该负责检查运行时是否存在所需的params?

函数是否应该负责检查运行时是否存在所需的params?
EN

Stack Overflow用户
提问于 2022-09-07 12:09:57
回答 1查看 41关注 0票数 0

对于TypeScript,您没有运行时保证,所以我想知道在哪里真正检查函数param是否存在。

信任TypeScript,假设someRequiredParam永远不会是未定义或空的:

代码语言:javascript
运行
AI代码解释
复制
function myFunc(someRequiredParam: { foo: string, bar: string }) {
  return JSON.stringify(someRequiredParam);
}

这将在编译时正常工作,但在运行时可能会发生故障。

不信任TypeScript,但是为什么要使用所需的params呢?

代码语言:javascript
运行
AI代码解释
复制
function myFunc(someRequiredParam: { foo: string, bar: string }) {
  if (isText(someRequiredParam?.foo) && isText(someRequiredParam?.bar)) {
    return JSON.stringify(someRequiredParam);
  }
}

如果您已经按要求输入了这些运行时检查,那么这些检查似乎是多余的。

在上述情况下,我最好将param及其嵌套的道具定义为可选的。

代码语言:javascript
运行
AI代码解释
复制
function myFunc(someRequiredParam?: { foo?: string, bar?: string }) {
  if (isText(someRequiredParam?.foo) && isText(someRequiredParam?.bar)) {
    return JSON.stringify(someRequiredParam);
  }
}

但是,在dev/编译时,您会丢失强类型,这似乎不对。

当然,在将值传递给函数之前,您也可以检查这些值是否存在,但是依赖这些值似乎也不正确。

我认为使用您可以信任的声音类型系统要容易得多,例如,在ReScript中,代码编译后不会出现这些运行时错误,因为语言迫使您处理相当于TS/JS中的空/未定义的情况。

但是我很想知道,人们是如何利用TypeScript的,这样就不会因为只在编译时捕获错误而给您一种错误的安全感。人们通常做的是使用很多类型的护卫吗?您是否在函数内部使用它们来检查运行时是否存在所需的params?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 12:19:46

如果您在您自己的模块的边界内,并且在TypeScript中是安全键入的,那么您可以信任您的类型签名。

如果您正在与另一个系统或服务器交互,那么当来自外部源的数据移动到您的模块中时,一定要添加检查。

TypeScript主要是声音。根据我的经验,如果您注意边界,那么在生产类型中错误是相当罕见的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73640965

复制
相关文章
python 检查是否存在ddos攻击
import dpkt import socket import optparse
用户5760343
2019/07/31
3.8K0
python 检查是否存在ddos攻击
Kettle之“检查表是否存在”
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/53884107
用户1148526
2019/05/25
3.9K0
检查自己的代码是否存在内存泄露
造成内存泄露的根本原因就是我们写的代码中存在某些对象长期占用内存,得不到释放,且这个对象占用的内存会逐步增加,导致 v8 无法回收,从而造成的服务的异常和不稳定,甚至是服务的中断和崩溃。
zz_jesse
2020/03/17
3K0
SonarQube检查项目中是否存在秘钥信息
持续集成和交付(CI / CD)管道旨在支持每天数以万计的部署。生产部署的频率不能以牺牲安全为代价,安全流程也需要与CI / CD管道集成在一起。这就是为什么我们在从开发到生产的流水线的每个步骤中都添加了持续的安全验证,以帮助确保我们的应用程序始终是安全的。
DevOps云学堂
2021/04/23
2.3K0
使用 shell(bash) 来检查 git 分支是否存在
不多说,直接上代码 localBranch=$(git branch|awk '{print $2}') if [ -n "localBranch" ]; then echo "存在该分支,并不进行创建" else echo "该分支不存在" fi
用户2353021
2020/05/11
3.6K0
Javascript中对象如何检查key(键)是否存在
如果要特别测试对象实例的属性(而不是继承的属性),请使用hasOwnProperty:
IT工作者
2022/02/09
26.9K0
知识分享之Golang——基于Golang的文件夹是否存在、文件是否存在函数
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。
cn華少
2022/06/08
1.3K0
检查原生 JavaScript 函数是否被覆盖
原文链接:https://mmazzarolo.com/blog/2022-07-30-checking-if-a-javascript-native-function-was-monkey-patched/[1]
chuckQu
2022/09/20
6220
检查原生 JavaScript 函数是否被覆盖
Node.js中如何检查是否存在某个目录
Node.js fs本地模块提供了几种有用的方法,可用于处理目录。 检查Node.js中是否存在某个目录的最简单方法是使用fs.existsSync()方法。
ccf19881030
2020/10/29
12K0
PHP检查对象或类中是否存在属性
$obj = \app\common\library\Email::instance(); $obj->p=889; if(isset($obj->p)){ echo 66; }else{ echo 99; } die; isset既可以判断对象的属性是否存在,也可以判断数组的键名是否存在 未经允许不得转载:肥猫博客 » PHP检查对象或类中是否存在属性
超级小可爱
2023/02/20
4.3K0
VBA应用技巧:检查文件夹是否已存在
在使用VBA操作文件时,如果不先核实要操作的文件夹是否已存在,则有可能会导致代码出错。例如,在创建文件夹时、在到指定的文件夹中获取文件时。因此,我们需要先使用代码判断是否已存在相应的文件夹。
fanjy
2022/11/16
4K0
MFC查找指定文件是否存在,PathFileExists 函数[通俗易懂]
PathFileExists函数参数传入的要包含文件名(含文件格式)。 存在该文件,则返回TRUE, 相反,返回FALSE. 调用函数,传参
全栈程序员站长
2022/09/14
2.2K0
LeetCode 1346. 检查整数及其两倍数是否存在
给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。
村雨遥
2020/05/06
1.6K0
CA2100:检查 SQL 查询是否存在安全漏洞
一种方法使用按该方法的字符串参数生成的字符串设置 System.Data.IDbCommand.CommandText 属性。
用户4268038
2022/02/20
1.8K0
检查整数及其两倍数是否存在 python3
给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。
SingYi
2022/07/14
1.4K0
检查整数及其两倍数是否存在 python3
Python 检测成员函数、成员变量是否存在的方法
AttributeError: A instance has no attribute 'fun2'
用户9127725
2022/08/08
2.9K0
如何快速准确的验证QQ邮箱是否开通,是否存在?
QQ是国内比较大的公共邮箱之一,做国内邮件营销的企业,无法避免需要做QQ邮件营销。既然是比较大的公共邮箱,那么群发邮件到达收件箱的难度也是比较有挑战性的。
用户2411043
2019/03/03
4.2K0
python 判断属性是否存在
hasattr(object, name)    说明:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的)。    参数object:对象。    参数name:特性名称。    返回为True或者为False 不过自己也可以定义一个方法 def getattribute(self, name): try:
py3study
2020/01/06
5.3K0
matlab通过exist函数判断数据、函数、文件等是否存在
在 MATLAB 中,exist 函数用于检查指定的变量、函数、文件或目录是否存在。它返回一个整数值,用于表示存在的对象的类型或存在的情况。
用户9925864
2023/09/05
2K0
matlab通过exist函数判断数据、函数、文件等是否存在
LeetCode 1391. 检查网格中是否存在有效路径(BFS)
给你一个 m x n 的网格 grid。网格里的每个单元都代表一条街道。grid[i][j] 的街道可以是:
Michael阿明
2020/07/13
5K0

相似问题

检查rails中是否存在params

20

是否可以检查params是否存在以评估结果

14

如何检查params中是否存在参数?

30

如何检查"params[:attribute]“中是否存在值

235

ReactJS / match.params检查用户是否存在

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文